Login ProductsSalesSupportDownloadsAbout |
Home » Technical Support » DBISAM Technical Support » Support Forums » DBISAM General » View Thread |
Messages 1 to 10 of 10 total |
Moving to C/S |
Thu, Feb 15 2007 6:33 PM | Permanent Link |
Gordon Turner | I'm experimenting with moving my shared file app to the C/S version and
having a problem figuring out the C/S way of doing things I do in shared file mode (DBISAM 3.24, Delphi 7). Currently, when the app starts, I check the data folder for the existence of the data files, and if a file is missing, I re-create the file. (The data files get created the same way when the app first starts up.) How do I test whether or not a table exists in the Server? Also, I perform backup and restore functions by zipping/unzipping all the files in the data folder. Is there any way to do this from a client application in C/S? Is there any way to manage/limit C/S users from within the app and from the server Admin tool? Lastly, I control licensing with an app user table. I check to see if the network ID exists in the table, but I also use semaphores to make sure the same UserID is not being used multiple times. Does this work the same way in C/S? -- Gordon Turner Mycroft Computing http://www.mycroftcomputing.com |
Fri, Feb 16 2007 12:13 PM | Permanent Link |
"Robert" | "Gordon Turner" <gordon@mycroftcomputing.com> wrote in message news:86F5C4C8-5CDF-4FCD-90BB-B7D6779751E9@news.elevatesoft.com... > I'm experimenting with moving my shared file app to the C/S version and > having a problem figuring out the C/S way of doing things I do in shared > file mode (DBISAM 3.24, Delphi 7). > Hmmm, not a good idea. If you are going to do any reworking of your app, go to DBISAM 4. There are a few things to change in SQL, and some (very few, and in general rather obscure) things that work different than V3, but you can probably get a fairly good size V3 application up and running in V4 in an afternoon (up and running, not thoroughly tested). But going to C/S you will have to retest just about everything anyway, and V4 C/S is much better than V3, so might as well do everything - upgrade to V4 and test C/S - at the same time. You'll end up with a better product. > Currently, when the app starts, I check the data folder for the existence > of the data files, and if a file is missing, I re-create the file. (The > data files get created the same way when the app first starts up.) How do > I test whether or not a table exists in the Server? > Use a ttable, and check for exists. > Also, I perform backup and restore functions by zipping/unzipping all the > files in the data folder. Is there any way to do this from a client > application in C/S? Is there any way to manage/limit C/S users from > within the app and from the server Admin tool? > > Lastly, I control licensing with an app user table. I check to see if the > network ID exists in the table, but I also use semaphores to make sure the > same UserID is not being used multiple times. Does this work the same way > in C/S? > By and large C/S in V4 will handle all these things with no pain. Backup and restore is pretty fast, and built into the engine. I use sempahores, etc, and switch my app from file sharing to C/S with just a few instructions before I activate the session. Same code throughout runs C/S of file sharing. Tim's new contraption, ElevateDB, that's a different story. Does not handle semaphores, for one. I suspect is will be a tougher nut to crack, for folks wanting to upgrade. Robert |
Fri, Feb 16 2007 3:12 PM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Gordon,
I would also suggest moving to version 4 during the conversion to C/S process. << Currently, when the app starts, I check the data folder for the existence of the data files, and if a file is missing, I re-create the file. (The data files get created the same way when the app first starts up.) How do I test whether or not a table exists in the Server? >> As Robert indicated, use the TDBISAMTable.Exists property. << Also, I perform backup and restore functions by zipping/unzipping all the files in the data folder. Is there any way to do this from a client application in C/S? >> In version 4, yes, via server-side procedures. In version 3, no. << Is there any way to manage/limit C/S users from within the app and from the server Admin tool? >> Yes. << Lastly, I control licensing with an app user table. I check to see if the network ID exists in the table, but I also use semaphores to make sure the same UserID is not being used multiple times. Does this work the same way in C/S? >> Yes. -- Tim Young Elevate Software www.elevatesoft.com |
Fri, Feb 16 2007 4:03 PM | Permanent Link |
Gordon Turner | Robert wrote:
> > Hmmm, not a good idea. If you are going to do any reworking of your app, go > to DBISAM 4. There are a few things to change in SQL, and some (very few, > and in general rather obscure) things that work different than V3, but you > can probably get a fairly good size V3 application up and running in V4 in > an afternoon (up and running, not thoroughly tested). > > But going to C/S you will have to retest just about everything anyway, and > V4 C/S is much better than V3, so might as well do everything - upgrade to > V4 and test C/S - at the same time. You'll end up with a better product. I'm hoping to do this with a minimum of fuss. The program is a commercial app and I've been putting off dealing with database conversion for existing customers until I create the next major version. Until then, I need to support my existing customer base, so I don't want to have to maintain two sets of code. > Use a ttable, and check for exists. > I create a TDBISAMTable component, set the TableName property to "BenefitDetail", the Database property to "\\Remote\TimeOff2CS\" and assign the FieldDefs and IndexDefs. When I execute the CreateTable procedure (since the Exists property is False) I get the following error: "DBISAM Engine Error # 11047 An unknown operating system error 53 occurred with the table '\\Remote\TimeOff2CS\BenefitDetail.DAT'." I've already created the database on the server, so I'm not sure why I'm getting this error. And when I've created the table manually thru DBSys, the Exists property is still False. So where am I going wrong? > By and large C/S in V4 will handle all these things with no pain. Backup and > restore is pretty fast, and built into the engine. Can this be done from the client, so that they can control where the backup file is saved? If so, how? > Tim's new contraption, ElevateDB, that's a different story. Does > not handle semaphores, for one. I suspect is will be a tougher nut to > crack, for folks wanting to upgrade. I'm starting to explore that for the next major release of all of my products. Since I'll be rewriting from the ground up, it's an ideal opportunity to convert the app. Of course, that also means handling data conversion for 1000+ customers, some of whom are not very computer savvy. -- Gordon Turner Mycroft Computing http://www.mycroftcomputing.com |
Fri, Feb 16 2007 5:05 PM | Permanent Link |
"Robert" | "Gordon Turner" <gordon@mycroftcomputing.com> wrote in message news:72D05EEA-06BC-469B-9A98-9851E1F96500@news.elevatesoft.com... > Robert wrote: >> >> Hmmm, not a good idea. If you are going to do any reworking of your app, >> go to DBISAM 4. There are a few things to change in SQL, and some (very >> few, and in general rather obscure) things that work different than V3, >> but you can probably get a fairly good size V3 application up and running >> in V4 in an afternoon (up and running, not thoroughly tested). >> >> But going to C/S you will have to retest just about everything anyway, >> and V4 C/S is much better than V3, so might as well do everything - >> upgrade to V4 and test C/S - at the same time. You'll end up with a >> better product. > > I'm hoping to do this with a minimum of fuss. The program is a commercial > app and I've been putting off dealing with database conversion for > existing customers until I create the next major version. Until then, I > need to support my existing customer base, so I don't want to have to > maintain two sets of code. > I hear you, but you might end up with more problems staying with V3, which is now unsupported. I don't remember the details now, but I know that I looked at V3 C/S and decided against it. V4 OTOH works beautifully. If you control your urges to change other aspects of the application, the conversion from V3 to V4 is really pretty simple stuff. >> Use a ttable, and check for exists. >> > I create a TDBISAMTable component, set the TableName property to > "BenefitDetail", the Database property to "\\Remote\TimeOff2CS\" and DatabaseNAME to your database component. > > I've already created the database on the server, so I'm not sure why I'm > getting this error. And when I've created the table manually thru DBSys, > the Exists property is still False. > > So where am I going wrong? > No idea, but it should work. But really, you should create tables with SQL. > > By and large C/S in V4 will handle all these things with no pain. > Backup and >> restore is pretty fast, and built into the engine. > > Can this be done from the client, so that they can control where the > backup file is saved? If so, how? > Unfortunately, I got a pretty nasty message from Tim when I tried to deal with this issue, so maybe I should not touch it again. Right now, my solution is to create another database and store the backup there, but of course you could store the backup inthe same folder where you have the table. You can query the database for the folder name and path. It has to be a path relative to the server, not to the client and that is a problem. By creating anaother database (basically an alias) I can get the path relative to the server, which is what backup and restore need. It's a bit cubersome, but it works. If you decide to go with V4, ask the question again, I'll post some code. >> Tim's new contraption, ElevateDB, that's a different story. Does not >> handle semaphores, for one. I suspect is will be a tougher nut to crack, >> for folks wanting to upgrade. > > I'm starting to explore that for the next major release of all of my > products. Since I'll be rewriting from the ground up, it's an ideal > opportunity to convert the app. Of course, that also means handling data > conversion for 1000+ customers, some of whom are not very computer savvy. > I have not even looked seriously at ElevateDB yet, but the conversion V3 to V4 was really pretty simple, since the basic architecture is the same as V3. In fact, I have a few small systems where all that I do is test one of the tables and if it is still V3 we upgrade them and keep going. The user gets a small notification, and then notices that the program is faster now Robert |
Sun, Feb 18 2007 6:08 PM | Permanent Link |
Gordon Turner | Tim Young [Elevate Software] wrote:
> > I would also suggest moving to version 4 during the conversion to C/S > process. OK. I don't want to appear too dense, but I'm a little confused about how to work with In-Memory tables in the context of a Remote database. Previously (in DBISAM shared file version 3) I created the table (let's call it MemTimeOff) in Memory by setting the DatabaseName to 'Memory' and issued the CreateTable command. Then to insert data into the MemTest table from physical tables, I added a TDBISAMQuery to the data module, set the SessionName to the application session (TestSession) and the DatabaseName to the application DatabaseName (TestDatabase) and set the SQL to: insert into Memory MemTimeOff select ReasonID, WeekDate, EmpID, Hours from TimeOff where EmpID = 0 or EmpID = :EmpID In creating the datamodule, I Prepared the query and then when it came time to insert data into the MemTimeOff table, I set the parameter and ran the query. In DBISAM version 4 remote this process no longer works. I get a "11010 table or backup file 'TimeOff' does not exist" error. I've set the SessionName when creating the memory table. Is there something else I need to do in Version 4 to create and populate Memory tables when working with a remote database? -- Gordon Turner Mycroft Computing http://www.mycroftcomputing.com |
Mon, Feb 19 2007 3:47 AM | Permanent Link |
Roy Lambert NLH Associates Team Elevate | Gordon
The syntax changed a bit insert into "Memory\MemTimeOff" <<<<<<<<<<<<<<<<<<<<<<<<<< select ReasonID, WeekDate, EmpID, Hours from TimeOff where EmpID = 0 or EmpID = :EmpID Roy Lambert |
Mon, Feb 19 2007 6:41 AM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Gordon,
<< I create a TDBISAMTable component, set the TableName property to "BenefitDetail", the Database property to "\\Remote\TimeOff2CS\" and assign the FieldDefs and IndexDefs. When I execute the CreateTable procedure (since the Exists property is False) I get the following error: "DBISAM Engine Error # 11047 An unknown operating system error 53 occurred with the table '\\Remote\TimeOff2CS\BenefitDetail.DAT'." I've already created the database on the server, so I'm not sure why I'm getting this error. And when I've created the table manually thru DBSys, the Exists property is still False. So where am I going wrong? >> If you're running the database server as a service, then you need to keep the database tables local on the server machine. Services run as the local System account and cannot, by default, access network drives. << I'm starting to explore that for the next major release of all of my products. Since I'll be rewriting from the ground up, it's an ideal opportunity to convert the app. Of course, that also means handling data conversion for 1000+ customers, some of whom are not very computer savvy. >> The data conversion is not any worse for DBISAM 4 -> EDB than it it is for DBISAM 3 -> DBISAM 4. -- Tim Young Elevate Software www.elevatesoft.com |
Mon, Feb 19 2007 6:44 AM | Permanent Link |
Tim Young [Elevate Software] Elevate Software, Inc. timyoung@elevatesoft.com | Gordon,
<< OK. I don't want to appear too dense, but I'm a little confused about how to work with In-Memory tables in the context of a Remote database. Previously (in DBISAM shared file version 3) I created the table (let's all it MemTimeOff) in Memory by setting the DatabaseName to 'Memory' and issued the CreateTable command. Then to insert data into the MemTest table from physical tables, I added a TDBISAMQuery to the data module, set the SessionName to the application session (TestSession) and the DatabaseName to the application DatabaseName (TestDatabase) and set the SQL to: >> Review this section of the manual: http://www.elevatesoft.com/dbisam4d5_changes.htm The syntax for referencing in-memory tables in SQL has changed in DBISAM 4. .. The MEMORY keyword has been removed from SQL statements and should be replaced with a database specification of "Memory\". For example, in 3.x you would specify the following SQL SELECT statement to retrieve data from an in-memory table: SELECT * FROM MEMORY biolife In version 4 you should use: SELECT * FROM "\Memory\biolife" -- Tim Young Elevate Software www.elevatesoft.com |
Mon, Feb 19 2007 12:02 PM | Permanent Link |
Gordon Turner | Tim Young [Elevate Software] wrote:
> > In version 4 you should use: > > SELECT * FROM "\Memory\biolife" That helped. I also had to add the remote database name to other queries that joined memory tables and remote tables. Thanks. (You'd think I'd remember stuff like that as I also have a couple Version 4 apps. Just too much stuff to cram into my tiny, overworked brain.) -- Gordon Turner Mycroft Computing http://www.mycroftcomputing.com |
This web page was last updated on Wednesday, August 14, 2024 at 07:31 PM | Privacy PolicySite Map © 2024 Elevate Software, Inc. All Rights Reserved Questions or comments ? E-mail us at info@elevatesoft.com |