StrataFrame Forum

InsertUsingStoredProcedure = True, leaves BO dirty

http://forum.strataframe.net/Topic18655.aspx

By Leonard P. - 8/21/2008

Hello,

I have a maintenance form. All data operations (update/insert/delete) used to work great, until I decided to handle inserts through a stored procedure.

Well, it's still kind of works, but after new row is added and Save is clicked, BO state remains dirty no matter what. So when form is closing "Would you like to save changes" dialog is displayed, even though user did click save before (many times).

Another thing I am noticing is that BO always sees new row as "New" even after Save is clicked and changes committed to the db, so if user clicks save multiple times it keeps adding the same record over and over again.

Please help. Thank you.

By Leonard P. - 8/22/2008

As a temporary work around I added code to _AfterSave even to accept changes on the current row:

  private void customReport_AfterSave(MicroFour.StrataFrame.Data.AfterSaveUndoEventArgs e)
        {
            foreach (DataRow row in customReport.CurrentDataTable.Rows)
            {
                if (row.RowState == DataRowState.Added)
                {
                    row.AcceptChanges();
                }
            }

        }

I hope to find better way of handeling it withing the Framework.

By Dustin Taylor - 8/22/2008

Did you write these sprocs yourself or let the DDT generate them? If you wrote them yourself, you can't use the SET NOCOUNT ON command at the top of your sproc (StrataFrame uses the count to determine the number of rows affected.)
By Leonard P. - 8/22/2008

Dustin, It was mine SP. SET NOCOUNT ON was the probelm.Thank you
By Dustin Taylor - 8/22/2008

No problem, glad you got it working Smile
By Marcia G Akins - 9/1/2008

Hello Stataframe team Member:

>> you can't use the SET NOCOUNT ON command at the top of your sproc (StrataFrame uses the count to determine the number of rows affected.) <<

It would be awfully nice if this were actually in the Stataframe documentation. Since my husband is a SQL Server DBA, he writes all of my stored procedures. I just happened to find this accidentally after a day of pulling my hair out for no reason.

Since best practice in SQL Server is to SET NOCOUNT ON at the beginning of every stored procedure to improve performance and to use @@RowCount to return the row count, my husband does not understand why the framework relies on NOCOUNT being off.

Marcia

By Dustin Taylor - 9/2/2008

Marcia,

As mentioned in the previous post, I'll include a note in the pertinent topics regarding SET NOCOUNT ON for the next release. Sorry for the confusion! Smile

By Marcia G Akins - 9/2/2008

Hi Dustin.

>> As mentioned in the previous post, I'll include a note in the pertinent topics regarding SET NOCOUNT ON for the next release. Sorry for the confusion! <<

No worries Smile I really am not rying to beat you up on this one. All in all, I am happy with my choice to go with Strataframe. It's a big product, so I expect to get a few bruises on the learning curve Smile

By Charles R Hankey - 9/3/2008

I for one am very glad to see you here. I think we all agree good frameworks only get better when knowledgable, experienced and ... intense BigGrin users bang on it and ask questions.



As I said before, I think the more you get to know the framework - and especially the Microfour folks - the more you are going to be delighted.
By Marcia G Akins - 9/3/2008

Hi Charles.

Well, having written my own VFP framework, I understand all too well that all frameworks make assumptions and in order to use the framework effectively, one has to understand what those assumptions are BigGrin That is the learning curve and it can't be avoided.

By Charles R Hankey - 9/3/2008

I think here you'll find the biggest surprises are in the area of "Oh my god, they are already handling that" (e.g. bubbling up the sp errors, presenting a wizard to handle connection if one is not already established etc.) Wait till you see the message service and localization stuff. Roll based security very cool as well. Don't know if you looked at the DDT very much, but the SMO approach to schema changes - and the ability to easily add that into the app ala Stonefield update is pretty impressive.



I hope after a year of using this you come to the training class next year (and bring Andy) I think you'll get a real kick out of Trent and Ben and the rest of the crew. (would really enjoy hearing Andy and Ben get into SQL esoterica Smile )



Anyway, I look forward to your insights and contributions here as I know you will bring a lot of experience and general common sense to using the product.


By Marcia G Akins - 9/3/2008

Hi Charles.

>> Don't know if you looked at the DDT very much, but the SMO approach to schema changes - and the ability to easily add that into the app ala Stonefield update is pretty impressive.  <<

< rof,l > and < lol >!!!! With Andy's involvement in this project as DBA, you can well imagine that his reastion would be "over my dead body!". When we were watching things in SQL Profiler, he was very upset at seeing the framework make direct calls to SP_ExecuteSQL.

By Edhy Rijo - 9/3/2008

Marcia G Akins (09/03/2008)
rof,l > and < lol >!!!! With Andy's involvement in this project as DBA, you can well imagine that his reastion would be "over my dead body!". When we were watching things in SQL Profiler, he was very upset at seeing the framework make direct calls to SP_ExecuteSQL.

Hi Marcia,

Like in everything else, there are many ways to skin the cat, and once you get to know the tools available for SF (BOM,  DDT, RBS) and use them then you will see the light at the end of the tunnel Tongue These tools are design with automation in mind, so the application can take care of itself automatically or with your assistance but being easy on your part.   Please don't show this post to Andy Hehe