ADOのVB-Script→BDS2006変換方法

解決


GTR  2008-06-10 01:02:46  No: 30946

ExcelのVBScriptで下記のように書かれています。
    Dim wAdoSet As New ADODB.Recordset
    wAdoSet.Fields.Append "OLDID" , adInteger
    wAdoSet.Fields.Append "BID"   , adInteger   
    wAdoSet.Fields.Append "BTYPE" , adInteger 
    wAdoSet.Fields.Append "BNCODE", adWChar, 7
    'カーソルの設定
    wAdoSet.CursorLocation = adUseClient
    
    Set funcMakeSijiSecRecset = wAdoSet

    wAdoSet.Open
    wAdoSet.AddNew
    '
    wAdoSet.Fields("OLDID") = 0
    wAdoSet.Fields("BID")   = 1

    wAdoSet.Update
    wAdoSet.MoveFirst

これをBDS2006で実行したいので、
次のようにコーディングしてみました。
1.AdoTableを追加
2.データフィールドの追加
   wAdoSet.Fielddefs.Clear;
   wAdoSet.Fielddefs.Add('OLDID' , ftInteger);
   wAdoSet.Fielddefs.Add('BID'   , ftInteger);
   wAdoSet.Fielddefs.Add('BTYPE' , ftInteger);
   wAdoSet.Fielddefs.Add('BNCODE', ftInteger);

3.データフィールドへ値セット
   wAdoSet.Open;  <----ここでエラーになります。
   EDataBaseError(メッセージ'connectionまたはconnectionstring
   プロパティが指定されていませんとなります。

   wAdoSet.Append;
    '
   wAdoSet.FieldByName('OLDID').AsInteger := 0;
   wAdoSet.FieldByName('BID').AsInteger   := 1;

   wAdoSet.Post;
   wAdoSet.First;

DBはSQLServer2005です。
VBScriptの様にconnection、出力用のテーブルを作らずに
すむ方法は無いでしょうか?


めじな  2008-06-10 01:18:58  No: 30947

> VBScriptの様にconnection、出力用のテーブルを作らずに
この部分が良く分かりませんが、、、(出力用のテーブル?)
エラーの原因はそのものズバリメッセージに出ています。

色々なやり方はあるかと思いますが
Delphiなのでデータモジュールにコネクション(ADOならTADOConnectionでしょうか)
を配置するような方法が一般的かと思います。
DelphiのDBプログラミングの本とかサイトを見るのが近道かと・・・


GTR  2008-06-10 01:35:07  No: 30948

めじな様

> VBScriptの様にconnection、出力用のテーブルを作らずに
とは、VBScriptではconnection、connectionstringプロパティに指定
が無いようでしたのでこの様に書きました。
また、connectionstringを指定しSQLSeverに接続は出来ますが、
一時ファイルなのでテーブルが無いものですから、テーブルを作成
せずに出来ないものかと。


めじな  2008-06-10 02:17:40  No: 30949

そういう事ですか。DBい接続しないわけですね。

多分もっといい方法があるかと思いますが
私でしたらTClientDataSetを使います。
(wAdoSetをTClientDataSetにします)
そしてOpenの代わりに「CreateDataSet」を使用すれば動くと思います。


GTR  2008-06-10 02:32:59  No: 30950

めじな様

回答ありがとうございます。
TClientDataSetで試してみます。
あと少しお教えください。
adWChar、adBSTRはFieldDefsでは何を指定すればよろしいでしょうか?
ftVariantで良いのでしょうか?


HOta  2008-06-10 05:06:13  No: 30951

>adWChar、adBSTRはFieldDefsでは何を指定すればよろしいでしょうか?
Accessは使った事がないので、憶測ですが、
adWCharは ftWideChar,
adBSTRは ftString
と思います。


GTR  2008-06-10 19:14:14  No: 30952

HOta様

ご回答ありがとうございます。
いろいろ試してみます。
有り難うございました。


※返信する前に利用規約をご確認ください。

※Google reCAPTCHA認証からCloudflare Turnstile認証へ変更しました。






  このエントリーをはてなブックマークに追加