Find Jobs
Hire Freelancers

Delphi and DBISAM

$30-5000 USD

クローズ
投稿日: 19年以上前

$30-5000 USD

完了時にお支払い
DBISAM version 4 has done away with RestructureTable and replaced it with the AlterTable function. I am having trouble implementing the new function. I like to learn by example. ## Deliverables Using the old RestructureTable function, I used something like the following ... procedure RestructureMagMedia; var ? ? TableToRestructure: TDBISAMTable; begin ? ? TableToRestructure:=[login to view URL](Application); ? ? try ? ? ? ? with TableToRestructure do begin ? ? ? ? ? ? DatabaseName := ggDatabaseName; ? ? ? ? ? ? TableName:='[login to view URL]'; ? ? ? ? ? ? Exclusive:=True; ? ? ? ? ? ? with RestructureFieldDefs do begin ? ? ? ? ? ? ? ? Clear; ? ? ? ? ? ? ? ? Add('uid',ftAutoInc,0,False,'','','','',fcNoChange,1); ? ? ? ? ? ? ? ? Add('authPerson',ftString,24,False,'','','','',fcNoChange,2); ? ? ? ? ? ? ? ? Add('fy_earned',ftDate,0,False,'','','','',fcNoChange,3); ? ? ? ? ? ? ? ? Add('fy_applies',ftDate,0,False,'','','','',fcNoChange,4); ? ? ? ? ? ? ? ? Add('gc_date',ftDate,0,False,'','','','',fcNoChange,5); ? ? ? ? ? ? ? ? Add('eAbn',ftString,13,False,'','','','',fcNoChange,6); ? ? ? ? ? ? ? ? Add('eBranchNumber',ftInteger,0,False,'','','','',fcNoChange,7); ? ? ? ? ? ? ? ? Add('eName',ftString,200,False,'','','','',fcNoChange,8); ? ? ? ? ? ? ? ? Add('eTradeAs',ftString,200,False,'','','','',fcNoChange,9); ? ? ? ? ? ? ? ? Add(etc ... ? ? ? ? ? end; ? ? ? ? ? ? with RestructureIndexDefs do begin ? ? ? ? ? ? ? ? Clear; ? ? ? ? ? ? ? ? Add('','uid',[ixPrimary,ixUnique],icNone); ? ? ? ? ? ? end; ? ? ? ? ? ? RestructureTable(0,0,0,0,True,MY_PASSWORD,'',64,-1,True); ? ? ? ? end; ? // with TableToRestructure ? ? finally ? ? ? ? [login to view URL]; ? ? end; end; ? // RestructureMagMedia When a table was initially opened, if the file structure had changed and exception would be generated, which would be caught and the above procedure would then be executed to update the structure. This worked well, because it did not matter how far behind in the upgrade process the user was, the above took care of them. With the new AlterTable, I do not seem to have the same flexibility. Let's say that ... ? FieldA was added in January 2004 FieldB was added in May 2004 FieldC was added in August 2004 Someone upgrading now may have last upgraded in March 2004, so they have FieldA, but they do not have the other 2 fields. We are upgrading hundreds of users who upgrade at different times. if I say ... [login to view URL](12,13,'FieldA',ftBCD,2,False); and the field already exists for this user, I have a problem. Even if I were able to check whether the field exists, that still means that I have to leave that checking code in there as long as there are users who may not have upgraded, which in some cases means that the code has to stay in there for years, as some users may not upgrade annually, even if they should. Can you see the problem? I need a working example that changes the structure of a table by: 1. Changing the field name of an existing record. 2. Adding a new field. 3. Adding a new index. I need it implemented in such a way the the routine can be run again, with not exception raised. This is necessary because in reality, the code has to serve many users, each at a different upgrade status (as outlined in the description). ## Platform I am using Windows XP Delphi 7 DBISAM 4 ... that is the main thing.
プロジェクト ID: 3458717

プロジェクトについて

1個の提案
リモートプロジェクト
アクティブ 19年前

お金を稼ぎたいですか?

Freelancerで入札する利点

予算と期間を設定してください
仕事で報酬を得る
提案をご説明ください
登録して仕事に入札するのは無料です
この仕事に1人のフリーランサーが、平均$43 USDで入札しています
ユーザーアバター
See private message.
$42.50 USD 5日以内
5.0 (7 レビュー)
2.7
2.7

クライアントについて

AUSTRALIAのフラグ
Australia
5.0
1
メンバー登録日:9月 17, 2002

クライアント確認

このクライアントからの他の仕事

Introductory Perl tuition
$30-5000 USD
ありがとうございます!無料クレジットを受け取るリンクをメールしました。
メールを送信中に問題が発生しました。もう一度お試しください。
登録ユーザー 投稿された仕事の合計
Freelancer ® is a registered Trademark of Freelancer Technology Pty Limited (ACN 142 189 759)
Copyright © 2024 Freelancer Technology Pty Limited (ACN 142 189 759)
プレビューを読み込み中
位置情報へのアクセスが許可されました。
あなたのログインセッションの有効期限がきれ、ログアウトされました。もう一度ログインしてください。