Valentina.GetDatabaseVersion() and remote database
Stan Busk
maxprog at mac.com
Wed Mar 14 17:11:01 CDT 2007
Yes, that works for me as well. It doesn't work if I use a function
and do 'db.Open f' in that function like this:
dim connection as new VConnection("localhost", "sa", "sa")
connection.Open
dim db as new VDatabase(connection)
dim f as new FolderItem("SomeDatabase")
OpenMyFileFunction(f) <--------------------------------My function
db.Close
db = nil
connection.Close
connection = nil
Function Database_UpdateSchema( f As FolderItem )
db.Open f <------------------------------------------Exception here
End Function
Always fail, at least in my live application.
stan
> So you're saying that you get error -39 when you call
> VDatabase.Open? This is a File Manager error , 'End of file'. If
> you're looking for code to open a remote database, the following
> works for me.
>
> dim connection as new VConnection("localhost", "sa", "sa")
> connection.Open
>
> dim db as new VDatabase(connection)
> dim f as new FolderItem("SomeDatabase")
> db.Open f
>
> db.Close
> db = nil
> connection.Close
> connection = nil
>
>
> Charles Yeomans
>
>
> On Mar 14, 2007, at 5:05 PM, Stan Busk wrote:
>
>>
>> I fully agree but that doesn't respond why 'Open' or
>> 'GetDatabaseVersion' works when called in the middle of the
>> connection code and not when called from a method or a function. I
>> can fully reproduce here. Actually I don't mind about what
>> GetDatabaseVersion does right now, my main concern is finding out
>> why a valentina function works well in the function where I open
>> the connection and not on other. I took 'GetDatabaseVersion' as an
>> example. If you prefer forget 'GetDatabaseVersion' and take
>> 'Open'. I have the same exact problem with 'Open'. I get a #-39
>> exception on all 'Open'.
>>
>> stan
>>
>>> Now I'm not sure what you're talking about. GetDatabaseVersion
>>> returns a value representing the db file format. If VServer
>>> opened it, then the file format of that database has been
>>> upgraded by VServer to the current file format. The only reason
>>> to use GetDatabaseVersion is that you are about to open a local
>>> database, and you want to check the file format first -- because
>>> if you let Valentina open it, the file format will be upgraded to
>>> the current one -- and you want perhaps to let the user confirm
>>> that it's okay to upgrade.
>>>
>>> Charles Yeomans
>>>
>>>
>>>
>>> On Mar 14, 2007, at 4:35 PM, Stan Busk wrote:
>>>
>>>> Hi,
>>>>
>>>> Yes, but when opening a remote DB you pass a FolderItem to it,
>>>> right? Valentina is supposed to recognize it is a remote DB as
>>>> you have initiated VDatabase using the server-like constructor.
>>>> It should work then. Anyway the point is it works on the place
>>>> where you open the connection but not from a function you call
>>>> from where you open the connection. I use global properties
>>>> everywhere so it should work but it doesn't. The same happen
>>>> with OPEN. It works from where you open the connection but not
>>>> from a function you call passing the folderitem. I have tried
>>>> all day and no way. The only possible way to open a file is thru
>>>> a single method in the middle of the connection code...That
>>>> means none of my 15 schema updates can be called.
>>>>
>>>> Stan
>>>>
>>>>> I think you're missing the point of
>>>>> Valentina.GetDatabaseVersion. As I understand it, all that it
>>>>> does is to read some bytes from the file represented by the
>>>>> FolderItem and return the information. This functionality
>>>>> should work no matter how Valentina is initialized. For a
>>>>> remote database, you cannot of course represent a database on
>>>>> the server as a FolderItem, in general. Thus
>>>>> Valentina.GetDatabaseVersion does not make any sense in that
>>>>> context.
>>>>>
>>>>> Unfortunately, the VDatabase interface is misleading.
>>>>>
>>>>> Charles Yeomans
>>>>>
>>>>>
>>>>>
>>>>>
>>>>> On Mar 14, 2007, at 2:41 PM, Stan Busk wrote:
>>>>>
>>>>>> Hi,
>>>>>>
>>>>>> Strange. The code below works:
>>>>>>
>>>>>> dbi = mValentinaServer.DatabaseInfo(1)
>>>>>> myDb = new myDatabase( mVConnection )
>>>>>> f = new FolderItem( dbi.path, FolderItem.PathTypeShell )
>>>>>> DBVersion = Valentina.GetDatabaseVersion( f )
>>>>>>
>>>>>> but as soon as I call Valentina.GetDatabaseVersion( f ) from
>>>>>> inside a method I get a Valentina Exception #-39. In other
>>>>>> words, rather than calling DBVersion =
>>>>>> Valentina.GetDatabaseVersion( f ) directly I have that function:
>>>>>>
>>>>>> Function Database_UpdateSchema( inFile As FolderItem )
>>>>>> Dim DbVersion as Integer
>>>>>> DbVersion = Valentina.GetDatabaseVersion( inFile )
>>>>>> End Function
>>>>>>
>>>>>> I don't understand the point here.
>>>>>>
>>>>>> stan
>>>>>>
>>>>>>> On 12/3/07 8:18 PM, "Stan Busk" <maxprog at mac.com> wrote:
>>>>>>>
>>>>>>> Hi Stan,
>>>>>>>
>>>>>>>> Are the two last lines of the following code correct?
>>>>>>>>
>>>>>>>> ---
>>>>>>>> mVConnection = new VConnection( aHost, aUserName, aPassword,
>>>>>>>> aPort,
>>>>>>>> aTimeOut, aParameter )
>>>>>>>> mVConnection.Open()
>>>>>>>> mValentinaServer = new VServer( mVConnection )
>>>>>>>>
>>>>>>>> dbi = mValentinaServer.DatabaseInfo(1)
>>>>>>>>
>>>>>>>> myDb = new myDatabase( mVConnection )
>>>>>>>>
>>>>>>>> f = new FolderItem( dbi.path, FolderItem.PathTypeShell )
>>>>>>>>
>>>>>>>> DBVersion = Valentina.GetDatabaseVersion( f )
>>>>>>>> ---
>>>>>>>
>>>>>>> Not a fact this is correct.
>>>>>>> Db already should be registered under VSERVER.
>>>>>>>
>>>>>>>> I am just trying to get the served DB version. It works fine
>>>>>>>> when the
>>>>>>>> database in on localhost but I have doubts that would work
>>>>>>>> on remote
>>>>>>>> DBs as well unless Valentina is clever enough to just use
>>>>>>>> the DB name
>>>>>>>> and already know what and where to look at. It looks like
>>>>>>>> the Open()
>>>>>>>> method is already that clever.
>>>>>>>
>>>>>>> Right. Open() opens db by name as it is registered under vserver
>>>>>>>
>>>>>>>
>>>>>>> --
>>>>>>> Best regards,
>>>>>>>
>>>>>>> Ruslan Zasukhin
>>>>>>> VP Engineering and New Technology
>>>>>>> Paradigma Software, Inc
>>>>>>>
>>>>>>> Valentina - Joining Worlds of Information
>>>>>>> http://www.paradigmasoft.com
>>>>>>>
>>>>>>> [I feel the need: the need for speed]
>>>>>>>
>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Valentina mailing list
>>>>>>> Valentina at lists.macserve.net
>>>>>>> http://lists.macserve.net/mailman/listinfo/valentina
>>>>>>
>>>>>> _______________________________________________
>>>>>> Valentina mailing list
>>>>>> Valentina at lists.macserve.net
>>>>>> http://lists.macserve.net/mailman/listinfo/valentina
>>>>>
>>>>> _______________________________________________
>>>>> Valentina mailing list
>>>>> Valentina at lists.macserve.net
>>>>> http://lists.macserve.net/mailman/listinfo/valentina
>>>>
>>>> _______________________________________________
>>>> Valentina mailing list
>>>> Valentina at lists.macserve.net
>>>> http://lists.macserve.net/mailman/listinfo/valentina
>>>
>>> _______________________________________________
>>> Valentina mailing list
>>> Valentina at lists.macserve.net
>>> http://lists.macserve.net/mailman/listinfo/valentina
>>
>> _______________________________________________
>> Valentina mailing list
>> Valentina at lists.macserve.net
>> http://lists.macserve.net/mailman/listinfo/valentina
>
> _______________________________________________
> Valentina mailing list
> Valentina at lists.macserve.net
> http://lists.macserve.net/mailman/listinfo/valentina
More information about the Valentina
mailing list