StrataFrame Forum

VS crashes when 1.6.1 opens solution

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

By Ben Hayat - 7/6/2007

Firstly, congratulation to the release of 1.6.1



Just got done installing 1.6.1 on Win2K machine. Everything went through fine.

Now as soon as I try to open any solution (including C# samples), I get the message the VS has encounter error and if I click "Don't Send" it closes VS and re-opens VS.



I rebooted the machine but no luck!



I also tried opening VB samples, same thing!



Thanks!
By Ben Hayat - 7/6/2007

Just to provide more info:

I even tried to create new SF project or none SF project, same result. Seems like, no matter what, VS has become unstable!



Same with WebSite creation!


By Ben Hayat - 7/6/2007

More info:



If I let it sit a while (before clicking on close button on error), I can see my last form show, but there is a red error on every label on the form and then for every label, there is also an error message box pops up.



But looking at the toolbox, I can see the label component on the toolbox.



Hope these helps!
By Chan - 7/6/2007

Hi,

I also hit the same problem for my VS 2005 SP 1 in WinXP Sp2 machine.



I am downgrading SF. Hope it works later.
By Trent L. Taylor - 7/6/2007

It sounds to me like your databases did not get updated.  Open the StrataFrame database through SQL Management Studio.  Open the DTEPreferences table and make sure that you have a field named pref_ShowFullBOName.  If not, then either you clicked the checkbox to skip the data deployment or the SQL structures did not get updated.  Go through the install again and make sure that the structures get updated.  Also, you can look at the log file in the c:\program files\common files\microfour\strataframe\strataframe_resultsX.log.

I don't want to be too confident then it will end up being an install issue Smile...but we did a lot of installs on 32 and 64-bit platforms from upgrades to fresh installs.  So I am pretty confident in the install and the upgrade process.  So you may want to check the table and we can go from there.

Note: The reason VS is crashing is because SF is trying to read the preference data from the table, to set some properties on solution startup, and it cannot load the data.

By Chan - 7/6/2007

Hi,

I have reinstalled SF 1.6.1. I am sure I NEVER checked to skip data deployment.

I checked my Strataframe database, the field pref_ShowFullBOName (bit) is exist in table DTEPreferences.



Any ideas? Urgent!
By Chan - 7/6/2007

Hi,

Attached result.log
By Teddy Jensen - 7/6/2007

Hi,

I have the same problem after installing 1.6.1.

VS crashes if i try to open an existing or create a new SF project.

/Teddy

By Ben Hayat - 7/6/2007

Open the DTEPreferences table and make sure that you have a field named pref_ShowFullBOName.




Hi Trent;



I checked the table and the field does exist. Just wanted to let you know, if I try to run an existing compiled project, some forms work and some forms I get lots of errors.



As mentioned before, I can not even create NONE SF projects!



Thanks!
By Trent L. Taylor - 7/7/2007

OK guys....sorry for thetrouble.  I am working on thisight now.  I think a last minute change is causing the prblem.  Blush
By Ben Hayat - 7/7/2007

Trent L. Taylor (07/07/2007)
OK guys....sorry for thetrouble. I am working on thisight now. I think a last minute change is causing the prblem. Blush
No sweat!
By Trent L. Taylor - 7/7/2007

Simple fix....simple problem Blush Attached is a ZIP file that contains two assemblies.  Follow the steps below once the ZIP file has been extracted to your local machine.

  1. Close Visual Studio
  2. Drag the two MicroFour DLLs into c:\Windows\Assembly (GAC)
  3. Re-open Visual Studio

That's it Hehe  Those darned last minute changes .... I knew better BigGrin

By Ivan George Borges - 7/7/2007

... and I thought I would have a good excuse not to work this weekend!

Tongue

By Trent L. Taylor - 7/7/2007

LOL...sorry BigGrin
By Ben Hayat - 7/7/2007

Ivan George Borges (07/07/2007)
... and I thought I would have a good excuse not to work this weekend!



Tongue




You Work??? BigGrin



Hey Ivan, I connected to your server last night. When are you going to change that 286 server to a 386. I have one 386 from 1985, if you want...Wink
By Ben Hayat - 7/7/2007

Trent L. Taylor (07/07/2007)
LOL...sorry BigGrin




Works great! Thanks...
By Ivan George Borges - 7/7/2007

You Work???

Only on weekends... Cool

Hey Ivan, I connected to your server last night. When are you going to change that 286 server to a 386. I have one 386 from 1985, if you want...Wink

Nah, no need for that. The software is so good that we thought of putting it on a PC XT, but then most of my games wouldn't run on an XT, so the 286 got in action... Tongue  (you very funny)

By Trent L. Taylor - 7/7/2007

I haven't noticed any speed issues with the Brazilian database.  It sucked down 500 records in less than 2 seconds from my crummy internet connection at my house....I was impressed! w00t
By Ben Hayat - 7/7/2007

Trent L. Taylor (07/07/2007)
I haven't noticed any speed issues with the Brazilian database. It sucked down 500 records in less than 2 seconds from my crummy internet connection at my house....I was impressed! w00t




I'm just busting his chops. I know, I did some edit/save and you can't tell it's not local.



Trent, let me ask you something. Let's say I have to change the salesrep (foreign key) of 500 customer, and if I use transaction, will each customer "change" to remote server happen individually or do they get packaged up as on large transaction from client and then sent to the SE for processing?



Thanks!
By Chan - 7/7/2007

It takes 8-14 secs to retrieve 500 records at Malaysia
By Keith Chisarik - 7/7/2007

Are the corrected assemblies packaged into the 1.6.1 DL currently available from the My Account area? Or will I need to get the zip file posted here as well.
By Greg McGuffey - 7/7/2007

Let's say I have to change the salesrep (foreign key) of 500 customer, and if I use transaction, will each customer "change" to remote server happen individually or do they get packaged up as on large transaction from client and then sent to the SE for processing?




There are a couple of ways that you might do this. The first would be to loop through a BO and update each rep. I think the only transaction support you'd get would be for each individual update. However, this is almost always a bad idea.



The better way is to use a sql statement, which is usually infinitely faster and the entire change can be wrapped in a transaction. For this method to work, you'd need to be able to select the 500 customers that need changing some how, via sql. I.e. they all had another rep and now need a different one or maybe they are in certain zip codes and need to be assigned to a rep. The update is then trivial:



-- T-SQL

-- customers is the customers table to be udpated

Update customers

Set repID = @repID

Where repID = @oldRepID -- in this case we are reassign the customers from one rep to another





Now, where do you execute this sql. There are two main options: call a sproc that does this work, or execute the sql directly. In either case, I'd likely create a method on the customer BO and pass it the new repid and the old rep ID (or whatever data is needed to select the reps to update) and execute the sproc/sql using the ExecuteNonQuery() method. Then you could wrap this single statement into a transaction (still within the BO method). The transaction is thus the updating of ALL the customers (only a single sql statement). All the logic is encapsulated within the BO, the server does the work, life is good BigGrin This works the same with or without SE.



This will be VERY fast (assuming appropriate indexes on the fields used in the where clause), compared to handling each customer on the client side individually (each update will be a call to the database...500 customers, 500 calls). If you are updating a gagillion customers, you can do it asynch, no problem...the work is actually being done on the server (assuming the server isn't on the same machine).



Hope this makes sense.
By Greg McGuffey - 7/7/2007

Hey Ivan, I connected to your server last night.




Ivan has a server we can hack...er...mess with? Wink
By Robert Carl Johnson - 7/7/2007

Trent, I downloaded the zip file and found the two dll's ok. However, the C:\windows\assembly folder on my system is protected and I am unable to drag the two files there. Looking at the folder there are no .dll files in it anyway. I did find microfour dll files in C:\ProgramFiles/CommonFiles/MicroFour/StrataFrame and I copied them there but no joy... SV still closes when I try to open a solution.



Robert
By Greg McGuffey - 7/7/2007

Have you tried to unhide protected operating system files?



In XP:

- In windows explorer, Tools|Folder Options...

- click on the "View" tab

- expand the Files And Folders node if it isn't already

- Uncheck the "Hide protected operating system files (Recommended)" option

- Click OK



See if that works.
By Ben Hayat - 7/7/2007

Hope this makes sense.


Greg, thank you very much for taking the time with your detail answer. The example that I brought up, was with a scenario that I had previously had to do in Delphi and SQL. And I had done it exactly as you said in the second strategy. I didn't use SProc, but I used SQL statement where I'd pass the old Salesrep and the new one to a method that would generate SQL on the fly and all the processing was done on DB Server. Now why did I ask this question, is another question, since I had done the solution before.



Ok, I was reading an article on LINQ that was explaining the actual statements of LINQ don't get executed (delayed execution) until you are iterating through the result sets (that's another subject of it's own), but to the naked eyes, the way you would update the 500 customers in LINQ, is done in the first style that you mentioned, client side and then LINQ turns around and packages it and creates a parameter SQL and does the job on DB server.



Then I started to think of this new project, how I should approach a bunch of "batch" jobs, NOW that they can easily be converted to LINQ style for the future, without much change to the approach.



So, my question of wrapping the 500 updates within a transaction was prompted by that thought. I still want to think this through that I can easily swap all the SQL codes with LINQ codes for the future.



Do I make sense?Smile



Thanks for your input!
By Pertti Karjalainen - 7/7/2007

Ivan,

if you set up your server as PC XT, make sure it is 8086 AND has a math coprocessor installed -- much speedier that way.  Oh, and a 40MB drive would be nice, too, for enough storage for a lifetime (or so we thought back in 1985).

Tongue

Pertti

By Ben Hayat - 7/7/2007

Pertti Karjalainen (07/07/2007)
Ivan,



if you set up your server as PC XT, make sure it is 8086 AND has a math coprocessor installed -- much speedier that way. Oh, and a 40MB drive would be nice, too, for enough storage for a lifetime (or so we thought back in 1985).



Tongue



Pertti


I think the one that he has, is the 8088 with Seagate 20Meg full height. He is not so happy to give up his second 5 1/4 floppy drive, which he could store 320KB of data...BigGrin
By Trent L. Taylor - 7/7/2007

Keith:

Are the corrected assemblies packaged into the 1.6.1 DL currently available from the My Account area?

Yes.  The install has been corrected and has the new assemblies.

By Trent L. Taylor - 7/7/2007

Robert:

C:\windows\assembly folder on my system

You can manually install the assemblies with gacutil....or just download the new install that is posted in the My Account area and it will take care of it.  To install with gacutil you will use the "-i" parameter.  The easiest thing though if you are not familiar with the command line tools and have permission issues is to just download the latest build....which was corrected the same time the zip file was posted out here...and it will fix your problem as well.

C:\ProgramFiles/CommonFiles/MicroFour/StrataFrame and I copied them there but no joy

Correct.  The GAC always takes precedence.  Anytime that an assembly tries to load it ALWAYS looks in the GAC first....even if you manually call Assembly.LoadFile() and give it the direct path of an assembly.