Level Extreme platform
Subscription
Corporate profile
Products & Services
Support
Legal
Français
How to replace VFP cursors
Message
 
To
05/08/2011 06:43:55
General information
Forum:
ASP.NET
Category:
Other
Environment versions
Environment:
VB 8.0
OS:
Vista
Network:
Windows XP
Database:
Jet/Access Engine
Application:
Desktop
Miscellaneous
Thread ID:
01520206
Message ID:
01520219
Views:
43
>>>>>
>>>>>String cStr = "SELECT  ..... FROM MainTable WHERE Key IN ("
>>>>>loop for each key you have in memory
>>>>>     cStr = cStr + Key.ToString() + ","
>>>>>endloop
>>>>>cStr = LEFT(cStr, LEN(cStr)-1)+")" && This is a VFP code, you should translate it to VB.NET :-)
>>>>>
>>>>>execute cStr 
>>>>>
>>>>
>>>>Not the most elegant solution, but definitely a solution to my problem. Thank you very much. :)
>>>>
>>>>
>>>>
>>>>>>>>I'm looking for a way to speed up a calculation routine that computes the total of a document that can contain up to a few hundred lines. The routine is slow now because for each line I access the db. I'm looking for a way to implement this in a more data oriented way.
>>>>>>>>
>>>>>>>>In VFP I would have dumped the relevant keys into a cursor and then join the tables to the cursor in an sql statement.
>>>>>>>>
>>>>>>>>I could of course simulate this by dumping the keys into a temporary table (which if I'm right would not limit the amount of times I access the db), but I was wondering if there is not a more "elegant" way to do this.
>>>>>>>>
>>>>>>>>TIA.
>>>>>>>
>>>>>>>I'm not sure I understand you right, but you could use derived tables in your SELECT.
>>>>>>>
>>>>>>>SELECT .....
>>>>>>>FROM MainTable
>>>>>>>INNER JOIN (SELECT Keys From SomeTable WHERE ...) DympedKeys
>>>>>>>   ON ....
>>>>>>>
>>>>>>
>>>>>>Right Borislav, I'm sorry, I was not explicit. I'm not working in VFP, but in vb.net. And my keys are for the time being stored in some sort of datatable in memory.
>>>>>>The problem of speed is relevant because I need to recompute the totals each time the user enters or changes a field in the document.
>>>>>
>>>>>I saw you posted in NET forum, so I expected that.
>>>>>But the code I gave you is pure SQL code, it is not Front end related, and it can be executed no matter what DB is used.
>>>>>The only drawback is that you have these keys in memory.
>>>>>Could you build your SELECT on the fly and concatenate these keys?
>>>>>(pseudo code)
>>>>>
>>>
>>>I see that you use ACCESS.
>>>If you use SQL Server 2008 you could pass a Table valued parameter to SP.
>>>http://msdn.microsoft.com/en-us/library/bb675163.aspx
>>
>>Boris, thank you for this. When I grow up I will definitely implement SQL Server :). I thought this would have a rather "evident" solution, but in fact, the one you suggest, i.e. building the select on the fly is perfectly implementable. I have googled around and my first reaction of "do people actually do this?" got a definite "yup" answer.
>>
>>Thanks again and kind regards,
>>
>>Marc
>
>Marc,
>
>(1) Concerning the string concatenation, it may be a good idea to use the StringBuilder http://msdn.microsoft.com/en-us/library/system.text.stringbuilder.aspx since we append a few hundred times
>
>
>(2) If you have all the keys in memory, why not keep the field (you use for the total) in memory as well ?

Gregory,

I am aware of (1).

As far as (2) is concerned, the problem at hand entails submitting a few fields to a set of business rules. It's nor impossible of course to reverse the process in order to "subtract" the ex ante values, but I kind of hesitate to go there.

If things have the tendency to go your way, do not worry. It won't last. Jules Renard.
Previous
Reply
Map
View

Click here to load this message in the networking platform