StrataFrame Forum

Error Using Demo for Trial

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

By Trevor Westerdahl - 6/7/2010

I loaded the trial and the sample databases into SQL Server 2005.



When I try the "Browse Dialog Advanced", "IsDirty Changed Event" or any of the demos I get:



**********************

SqlException

Invalid object name 'customers'.



Source : .Net SqlClient Data Provider



Stack Trace:

at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection)

at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj)

at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj)

at System.Data.SqlClient.SqlDataReader.ConsumeMetaData()

at System.Data.SqlClient.SqlDataReader.get_MetaData()

at System.Data.SqlClient.SqlCommand.FinishExecuteReader(SqlDataReader ds, RunBehavior runBehavior, String resetOptionsString)

at System.Data.SqlClient.SqlCommand.RunExecuteReaderTds(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, Boolean async)

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method, DbAsyncResult result)

at System.Data.SqlClient.SqlCommand.RunExecuteReader(CommandBehavior cmdBehavior, RunBehavior runBehavior, Boolean returnStream, String method)

at System.Data.SqlClient.SqlCommand.ExecuteReader(CommandBehavior behavior, String method)

at System.Data.SqlClient.SqlCommand.ExecuteDbDataReader(CommandBehavior behavior)

at System.Data.Common.DbCommand.System.Data.IDbCommand.ExecuteReader(CommandBehavior behavior)

at System.Data.Common.DbDataAdapter.FillInternal(DataSet dataset, DataTable[] datatables, Int32 startRecord, Int32 maxRecords, String srcTable, IDbCommand command, CommandBehavior behavior)

at System.Data.Common.DbDataAdapter.Fill(DataTable[] dataTables, Int32 startRecord, Int32 maxRecords, IDbCommand command, CommandBehavior behavior)

at System.Data.Common.DbDataAdapter.Fill(DataTable dataTable)

at MicroFour.StrataFrame.Data.DbDataSourceItem.GetDataTable(DbCommand Command, OnChangeEventHandler CallBack)

at MicroFour.StrataFrame.Data.SqlDataSourceItem.GetDataTable(DbCommand Command, OnChangeEventHandler CallBack)

at MicroFour.StrataFrame.Data.DbDataSourceItem.GetDataTable(String Statement, OnChangeEventHandler CallBack)

at MicroFour.StrataFrame.Data.DataLayer.GetDataTable(String Statement, Boolean RegisterNotification)

at MicroFour.StrataFrame.Business.BusinessLayer.FillDataTable(String SelectStatement)

at BrowseDialogAdvancedSample.CustomersBO.FillTop100()

at BrowseDialogAdvancedSample.Form1.CustomersBO1_ParentFormLoading()

at MicroFour.StrataFrame.Business.BusinessLayer.raise_ParentFormLoading()

at MicroFour.StrataFrame.Business.BusinessLayer.OnParentFormLoading()

at MicroFour.StrataFrame.Business.BusinessLayer.RaiseParentFormLoadingEvent()

at MicroFour.StrataFrame.UI.Windows.Forms.BaseForm.InitializeFormLoadObjects()

at MicroFour.StrataFrame.UI.Windows.Forms.BaseForm.OnLoad(EventArgs e)

at System.Windows.Forms.Form.OnCreateControl()

at System.Windows.Forms.Control.CreateControl(Boolean fIgnoreVisible)

at System.Windows.Forms.Control.CreateControl()

at System.Windows.Forms.Control.WmShowWindow(Message& m)

at System.Windows.Forms.Control.WndProc(Message& m)

at System.Windows.Forms.ScrollableControl.WndProc(Message& m)

at System.Windows.Forms.ContainerControl.WndProc(Message& m)

at System.Windows.Forms.Form.WmShowWindow(Message& m)

at System.Windows.Forms.Form.WndProc(Message& m)

at System.Windows.Forms.Control.ControlNativewindow.OnMessage(Message& m)

at System.Windows.Forms.Control.ControlNativewindow.WndProc(Message& m)

at System.Windows.Forms.Nativewindow.Callback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)





**********************



Interestingly, when I close the Error Dialog, it looks like the Browse Dialog demo works and it can get data y choosing "Browse" or "Browse as Lookup".



However, most demos do not work and all give me errors.



I thought I entered my database credentials incorrectly, but found nowhere to change what I entered. So, I uninstalled StrataFrame. That led to another problem. It hung on Unregistering assemblies. I then moved the open form and noticed an error message that the uninstall path for 2005 templates could not e found (that makes sense because I am using VS2008, not 2005) but it does not make sense that an error dialog is not displayed in front of other forms. After clicking okay, it then uninstalled correctly.



However, I reinstalled StrataFrame (and I ensured the Program Files directories were removed) only to discover my credentials PERSISTED BEYOND THE UNINSTALL!



I looked here on the forum and found the reference to connection.dat... IT IS STORED IN THE HIDDEN APPLICATION DATA DIRECTORY!



Why? I suggest moving it to a non-hidden and expected directory... at least clean up the application data directory when uninstalling.



Anyway, I was then asked for my credentials again, where it is clear that "ad" credentials are tested, so it wasn't a login/access to SQL Server problem.



That leaves me with a demo that is not working and crashes on every demo from the Sample Console.



How do I get this resolved?



TIA
By Trevor Westerdahl - 6/7/2010

I am beginning to suspect that the Demo is trying to use Integrated Security even though I specified a Username and Password for SQL Server.



FYI: My test server will not accept Integrated Security connections.



...just a thought... its not good trying out a broken demo.
By Edhy Rijo - 6/7/2010

Hi Trevor,



The Connections.dat and AppKeys.dat files are in this folder:

%ProgramData%\MicroFour\ConnectionData




If you connection is not correct, just delete above files and run the demo again.
By Trevor Westerdahl - 6/7/2010

I think you missed my point: I found those files, deleted them and re-entered my connection info. It didn't fix the problem.
By Ivan George Borges - 6/7/2010

Hi Trevor.

Welcome to the comunity. You will find that people around here are extremely friendly and will do their best to help you out.

One thing that could help at this moment would be to try and get some variables out of the way, so we could concentrate on the StrataFrame features through the demos. Maybe you could set up a testing machine or even a virtual machine and have a fresh install, this way you would have total control of the environment and would certainly be able to run the demos. If you don't mind this, go ahead and we will all be ready to go step by step on the way.

Hope it helps.

Cheers.

By Edhy Rijo - 6/7/2010

Trevor Westerdahl (06/07/2010)
I think you missed my point: I found those files, deleted them and re-entered my connection info. It didn't fix the problem.



You are right Hehe so let's try again....



Based on your error:

SqlException

Invalid object name 'customers'.


The customer table is not being found. Make sure your connection string is pointing to the StrataFrameSample database and that the user have rights for this database and try again.
By Trevor Westerdahl - 6/7/2010

I have multiple projects with other tools that access the database just fine. I enabled Windows Authentication and tested access to the database.





Consider this:



1) The user account can access that database and get access to SQL Server (I tested named pipes and TCP/IP). The account has been mapped to the database.

2) Again, with the "Browse Dialog Advanced Demo" - After getting the error, The demo WORKS - it accesses the database AND all the records are available.



Hmmm.... I am now wondering if this is a case sensitivity problem. This SQL Server instance is case-sensitive and (just thinking out loud) it appears that the items failing are referencing the wrong case (I.e. customer versus Customer, or rl_role versus rl_Role). I also happened to notice that the browse dialog test will find all the "Smith's" only if I type a search with a capital "S", not a lower-case "s".



looking into it...
By Trevor Westerdahl - 6/7/2010

Okay, that is definitely the problem: case sensitivity.



I opened the Visual Studio solution for Role-based Security and tried to open the Customers form. I get the same error: that "customers" is not a valid object. I changed the code from this:

      

public void FillTop100() {

this.FillDataTable("SELECT TOP 100 * FROM Customers");

      }

By Trevor Westerdahl - 6/7/2010

Arghh!!



Okay, hit post by accident.



I changed the case from above from "customers" to "Customers" and it worked.



So, the demo will always fail with any SQL Server instance set to be case-sensitive.
By Edhy Rijo - 6/7/2010

Well, that is a new one for me.



Anyway I am glad at least you found out why it was failing, unfortunately I have no idea how that "case sensitive" stuff can be controlled either by the server or the connection string, hopefully somebody from StrataFrame will be able to comment on this one.
By Trevor Westerdahl - 6/7/2010

It can be fixed by specifying the correct collation (I.e Latin1_General_CI_AS) in the install scripts. Any SQL Server instance with a different (I.e. case-sensitive - SQL_Latin1_General_CP1_CS_AS) collation as a server default will fail.


By Ivan George Borges - 6/8/2010

Glad you got it going, Trevor. Wink
By Trevor Westerdahl - 6/8/2010

Getting it going is not an easy task once a database is installed with the wrong collation. I would actually have preferred the demo to work in case-sensitive mode.



I suggest this:



1) Synchronize the demo code to the installed schema such that there are no variations in case sensitivity (that would fix the problem).



OR



2) Have your install scripts specify a case-insensitive collation. If no collation is specified, the default of the server will be used. Certainly, any collations from other languages let alone case sensitivity collation issues will break the demo. It really should only require a small change to one-line for your install script such that it specifies collation when the database is created. Use the built-in script tool for SQL Server for any of your databases and you should see an example of how the collation is specified (the built-in tool will ensure that collation is included in the script).



NOTE: Once a database is installed with the wrong collation, it requires a very complex script to change it. It is a major task to convert a "server's" default as opposed to setting a default for a "database" (within the server).



So, this was resolved by deleting the database and using a different server. Since, I didn't have access to your install script, I could not properly install it on that server. Thus, my two suggestions above.
By Ivan George Borges - 6/9/2010

Yep, it makes sense. Thank you for your contribution, I will make sure it goes to our developers. Wink