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、出力用のテーブルを作らずに
すむ方法は無いでしょうか?
> VBScriptの様にconnection、出力用のテーブルを作らずに
この部分が良く分かりませんが、、、(出力用のテーブル?)
エラーの原因はそのものズバリメッセージに出ています。
色々なやり方はあるかと思いますが
Delphiなのでデータモジュールにコネクション(ADOならTADOConnectionでしょうか)
を配置するような方法が一般的かと思います。
DelphiのDBプログラミングの本とかサイトを見るのが近道かと・・・
めじな様
> VBScriptの様にconnection、出力用のテーブルを作らずに
とは、VBScriptではconnection、connectionstringプロパティに指定
が無いようでしたのでこの様に書きました。
また、connectionstringを指定しSQLSeverに接続は出来ますが、
一時ファイルなのでテーブルが無いものですから、テーブルを作成
せずに出来ないものかと。
そういう事ですか。DBい接続しないわけですね。
多分もっといい方法があるかと思いますが
私でしたらTClientDataSetを使います。
(wAdoSetをTClientDataSetにします)
そしてOpenの代わりに「CreateDataSet」を使用すれば動くと思います。
めじな様
回答ありがとうございます。
TClientDataSetで試してみます。
あと少しお教えください。
adWChar、adBSTRはFieldDefsでは何を指定すればよろしいでしょうか?
ftVariantで良いのでしょうか?
>adWChar、adBSTRはFieldDefsでは何を指定すればよろしいでしょうか?
Accessは使った事がないので、憶測ですが、
adWCharは ftWideChar,
adBSTRは ftString
と思います。
HOta様
ご回答ありがとうございます。
いろいろ試してみます。
有り難うございました。
ツイート | ![]() |