ADODBに関する疑問

このQ&Aのポイント
  • ADODBに関して現在とあるサンプルスクリプトをベースに自分の環境に併せてカスタマイズしたいと考えているが、一部のコードの意味が分からない。
  • 具体的には、CreateObjectでADODB.Recordsetオブジェクトを作成し、FieldsコレクションにAppendメソッドを使用してフィールドを追加している部分の意味が分からない。
  • ネットで調べても該当する答えが見つからなかったため、こちらで質問している。
回答を見る
  • ベストアンサー

ADODBに関して

お世話になります。 現在とあるサンプルスクリプトを ベースに自分の環境に併せてカスタマイズしたいと 考えているのですが、以下の部分の意味がわからず、 ネットで調べても該当する答えを見つけることができなかったため こちらに質問させていただきました。 Set hensu = CreateObject("ADODB.Recordset") hensu.Fields.Append "txt", 200, 45000, &H00000080 この上段の部分の意味はわかるのですが、 二段目のhensu.Fields.Append "txt", 200, 45000, &H00000080 という部分の意味が分かりません。 "Fields"というコレクションはわかったのですが、"Append"以降が 何を意味しているのかが、わかりません。 お手数ですが、ご回答をお待ちしております。

質問者が選んだベストアンサー

  • ベストアンサー
  • jamshid6
  • ベストアンサー率88% (591/669)
回答No.1

hensu.Fields.Append "txt",adVarChar,45000,adFldLong と書けば意味わかりますか? http://msdn.microsoft.com/ja-jp/library/cc364097.aspx Googleで検索するなら「ADO API」です。

delcder0d3
質問者

お礼

早速の回答ありがとうございます。 参照のURLもありがとうございます。 書いていただいた内容で理解できました。 的確かつ素早い対応ありがとうございました。

関連するQ&A

  • wshでcsvファイルのソートを行いたい

    wshのプログラムで困っているため教えてください。 wshでcsv(カンマ区切り)のファイルのソートを行い、Escel形式で保存するプログラムを書いています。 調べてみたところ、wshではソート関数がないようで、 adodbのsort関数を使用して対処しようとしていますが、どうもうまくいきません。 (※adodbの必要はないのですが、ExcelVBAのsortのコードを書こうとするとエラーになってしまったので、adodbにしています。) <仕様> csvファイルのソートのキーになるのは、「判定区分」の値で昇順に行いたいです。 csvファイルの一行目は、カラム名としてソート対象にはなりません。 読み込んだcsvファイルをexcel形式に保存したいです。 ■csvファイルの形式は、以下のような形です。 性別,年代,判定区分,生年月日,日付 女性,10,0,2010/01/10,2013/7/7 23:57 男性,50,2,2000/03/30,2013/7/7 13:7 女性,10,0,1990/01/20,2013/7/7 15:22 女性,20,1,2001/12/10,2013/7/7 8:10 *----------------------------------- <ソース> Set con = CreateObject("ADODB.Connection") With con .ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & Path & ";" _ & "Extended Properties='text;HDR=Yes;FMT=Delimited'" .Open End With Set rec = CreateObject("ADODB.Recordset") rec.Open "select * from " & csvfile & " order by 判定区分", con *----------------------------------- うまくいかないため ↓でも書いています。 *----------------------------------- Const adDate = 7 Const adVarChar = 200 Dim ans Set objADO = CreateObject("ADODB.Connection") Set rs = CreateObject("ADODB.Recordset") Set re = CreateObject("VBScript.RegExp") rs.Fields.Append "性別", adVarChar, 255 rs.Fields.Append "年代", adVarChar, 255 rs.Fields.Append "判定区分", adVarChar, 255 rs.Fields.Append "生年月日", adDate rs.Fields.Append "日付", adDate rs.Open ans = "" rs.Sort ="判定区分 ASC" rs.MoveFirst Do While Not rs.EOF ans = ans & rs.Fields(0).Value & vbCrLf rs.MoveNext Loop MsgBox ans エラーになってしまいます。 ソート処理だけですでににっちもさっちもいかないため、教えていただきたいです。 どうぞ宜しくお願いいたします。

  • 2次元のdictionary

    こんにちは。 recordsetの結果をDictionaryにいれたいと思っています。 環境はWindows Vista、vbScriptで書いています。 set dc = createobject("scripting.dictionary") Set rs = Server.CreateObject("ADODB.Recordset") rs.open (sql文), con  for i = 0 to rs.recordcount -1 for j = 0 to rs.fields.count - 1 dc.add rs.fields(j).name, rs.fields(j).value next next ちょっとイメージっぽく書きましたが(このままではエラーでます)、要は複数のフィールドを持つ複数のレコードを入れられないかということです。 色々調べたりしてみたのですがわかりません。 できないのかな?と思いました。 もしできるなら書き方をご教授頂けたらと思います。 よろしくお願いします。

  • ADO Connection.Excuteで、INSERT出来ても、DELETE,UPDATE 出来ない

    ADOを使った、プログラムを練習しています。  Dim mycon As ADODB.Connection Dim myre As ADODB.Recordset Set mycon = CreateObject("ADODB.Connection") Set myre = CreateObject("ADODB.Recordset") mycon.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=C:\sample7-10.mdb;" mycon.Execute "INSERT INTO 社員sample VALUES(308,'will', '営業','2007/1/1')" ※mycon.Excute "UPDATE 社員sample SET 部署名='営業' WHERE 部署名='営業'" ※mycon.Excute "DELETE FROM 社員sample WHERE 部署名='営業'" mycon.Close Set myco = Nothing ここで、INSERTは、うまくいくのですが、UPDATE,DELETE(※)が、 うまくいきません。 (コメントを使いながら、ひとつずつ、試しています)。 アクセスしているデータベースは、Accessのサンプルmdb、 ノースウィンドです。 何か、パスワードが働いているのでしょうか。 何かわかる人がいましたら、お願いします。

  • ADODB.Streamを使って新規にファイルを作

    ADODB.Streamを使って新規にファイルを作成することは可能ですか? --------------------------------------------- Sub test1() Dim n As Long n = FreeFile Open "C:\sample.html" For Output As #n Print #n, "テキスト" Close #n End Sub これで、新規にhtmlファイルを作れるのですが --------------------------------------------- Sub test2() Dim st As Object Dim Sample As String Set st = CreateObject("ADODB.Stream") オブジェクトに保存するデータの種類を文字列型に指定する st.Type = adTypeText 文字列型のオブジェクトの文字コードを指定する st.Charset = "UTF-8" st.Open 'オブジェクトのインスタンスを作成 st.WriteText Sample, adWriteLine 'ココでエラー オブジェクトの内容をファイルに保存 st.SaveToFile ("c:\sample.html"), adSaveCreateOverWrite オブジェクトを閉じる st.Close メモリからオブジェクトを削除する Set st = Nothing End Sub --------------------------------------------- この方式で新規にファイルを生成して保存することは可能ですか? 該当部分でエラーが発生します。

  • VB6,Access2000のMDBでのデータ型指定

    VB6でAccess2000のMDBを使用しています。 次のような形で一時的なレコードセットRS(0)を作成しようと思うのですが、このときの DataTypeEnum に相当するデータ形式がわかりません。 目的はMDBテーブルから作成したレコードセットRS(1)とのデータ交換です。そのMDBテーブルで数値としてあるフィールドとやりとりするRS(0)側のフィールドのデータ型(DataTypeEnum)を何に設定していいのかわかりません。 選択肢は次のページにあります。 http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/jpado260/htm/mdcstdatatypeenum.asp Set RS(0) = New ADODB.Recordset RS(0).Fields.Append "LinNo", adDouble ← この adDouble の位置で 何を指定するか。。。 RS(0).Fields.Append "JobID", adDouble RS(0).Fields.Append "JobName", adVarChar, 200 RS(0).Open よろしくお願いします。

  • ASPでExcelのセルに罫線、色付け

    WebサーバーにExcelがセットアップされてないので、 Set rs=Server.CreateObject("ADODB.Recordset") を使用し、Excelオブジェクトを作成後、 接続文字列、SQLを渡して、レコードセットを開きました。 strSQL = "select * from DATA_RANGE" Rs.Open strSQL, Con, 0 '0=adOpenForwardOnly 以下のようにして、Excelに値をセットすることはできたのですが、 rs.Fields(0).Value = "AAA" 罫線や、色をつける方法がわかりません。 どうかご教授ください。

  • Access 非連結からレコード追加について

    標記の件。 不明な点がありご教授頂きたくお願い致します。 今まで普通に使えていたのですが急にエラー「実行時エラー2147467259・(80004005)エラーを特定できません」が出るようになりました。 Windowsのヘルプを参照しましたが、全然ヘルプどころか謎が深まるばかりという状況です。 2つあるチェックボックスの2つ目でエラーになります。 下記コードで全体の改善点含め原因等ありましたらご教授をお願い致します。クエリに変更はありませんでした。 Private Sub btn_登録_Click() Dim con As ADODB.Connection Dim rst As ADODB.Recordset Set con = CurrentProject.Connection Set rst = New ADODB.Recordset If IsNull(txt_工数ロットCD = "" Or _ txt_部品CD = "" Or _ txt_図面番号 = "" Or _ txt_数量 = "" Or _ txt_品名 = "" Or _ cmb_社員名 = "" Or _ txt_作業日 = "" Or _ cmb_工程 = "" Or _ txt_工数 = "") Then MsgBox " 未入力項目があります", vbCritical, "確認" Exit Sub End If If txt_工数ロットCD = "" Or _ txt_部品CD = "" Or _ txt_図面番号 = "" Or _ txt_数量 = "" Or _ txt_品名 = "" Or _ cmb_社員名 = "" Or _ txt_作業日 = "" Or _ cmb_工程 = "" Or _ txt_工数 = "" Then MsgBox "未入力項目が有ります", vbCritical, "確認" Exit Sub End If rst.Open "Q_工程進捗確認", con, adOpenForwardOnly, adLockPessimistic On Error GoTo err_handler 'エラーなら con.BeginTrans ' With rst .AddNew .Fields("工数ロットCD") = Me!txt_工数ロットCD .Fields("部品CD") = Me!txt_部品CD .Fields("数量") = Me!txt_数量 .Fields("社員名") = Me!cmb_社員名 .Fields("作業日") = Me!txt_作業日 .Fields("工程") = Me!cmb_工程 .Fields("工数") = Me!txt_工数 If IsNull(Me.chk_自工程完了) Then .Update Else .Fields("自工程完了") = Me.chk_自工程完了 .Update '更新 End If If IsNull(Me.chk_製作完了) Then .Update '更新 Else .Fields("製作完了") = Me.chk_製作完了.Value ←ここでエラー .Update End If End With con.CommitTrans '確定 Set rst = Nothing Set con = Nothing Call btn_クリア_Click Exit Sub err_handler: con.RollbackTrans Call dbcut_off MsgBox Error$ Debug.Print Error$ End Sub

  • VBA Shift-JISをJISに変換すると半角カナが全角に変換されてしまう

    Excelから全銀フォーマットファイル(文字コード:JIS)を出力する目的で、VBAでADODB.Streamを利用して下記のサンプルコード書いた時、 半角カナが全角カナに変換されてしまう現象が解消できません。 [サンプルコード] With CreateObject("ADODB.Stream") .Open .Position = 0 .Type = 2 .Charset = "iso-2022-jp" .WriteText "(半角ア)、ア、1、1、a、a" .SaveToFile "C:\result.txt", 2 .Close End With [C:\result.txtの内容] ア、ア、1、1、a、a 解決策をご教授お願いいたします。

  • ASPでAccessのデータを更新、削除

    ASPでAccessのデータベースに対するデータの更新、レコードの 削除が出来ません。(データの検索、参照は出来ています。) DBはAccess2000です。 下記のようなエラーメッセージが出てしまいます。 【エラーメッセージ】 ADODB.Recordset エラー '800a0cb3' オブジェクトまたはプロバイダは要求された操作を実行できません。 /asp/ParsonUP.asp, 行 95 【プログラム】 <% dMode = Request.QueryString("MODE") sSyain = Request.QueryString("SyainNO") sSimei = Request.QueryString("Simei") sKaisya = Request.QueryString("KAISYA") '************* DB コネクション ************************** Dim fPROV,fDBNAME fPROV = "Microsoft.Jet.OLEDB.4.0" fDBNAME = "D:\Inetpub\wwwroot\asp\data\OP_tbl2.mdb" Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.ConnectionString = "Provider=" & fPROV & ";Data Source=" & fDBNAME ObjConn.Open Set ObjRS = Server.CreateObject("ADODB.Recordset") StrSQL = "SELECT * FROM TM_個人情報 WHERE TM_個人情報.社員NO = '" & sSyain & "';" '************************************************** If sSyain<>"" Then Select Case dMode Case "UpDT" '更新登録 ObjRS.Open StrSQL, ObjConn, adOpenStatic With ObjRS .Fields("氏名").Value=sSimei .Fields("所属会社").Value=sKaisya .Update .close End With Case "DelDT" '削除 ObjRS.Open StrSQL, ObjConn ObjRS.Delete End Select Else Response.Write "<H2>処理に失敗しました</H2>" End If %>

  • ASPソースコードをPHPソースコードに書き換え

    下記のASPソースコードをPHPソースコードに書き換えようとしています。 <% Set ObjConn = Server.CreateObject("ADODB.Connection") ObjConn.Open "database_1" Set ObjRS = Server.CreateObject("ADODB.Recordset") ObjRS.Open "food", ObjConn, 3, 3 ObjRS.Filter = "jewelry_0_ID=" & Request.QueryString("No") If ObjRS.EOF Then Response.Write("選択された名称の区分はありません。<br><hr>") Response.Write("<a href=""index.html"">区分選択に戻る</a>") Response.End End If Do While Not ObjRS.EOF Response.Write("<tr><td>") Response.Write(ObjRS.Fields("名称").Value) Response.Write("</td><td>") ObjRS.MoveNext Loop ObjRS.Close ObjConn.Close %> PHPに不慣れであるため、このうち、 Set ObjRS = Server.CreateObject("ADODB.Recordset") ObjRS.Open "jewelry", ObjConn, 3, 3 ObjRS.Filter = "jewelry_0_ID=" & Request.QueryString("No") と、 ObjRS.Close をどのようにすればよいか、分かりません。PHPには、レコードセットを開くという概念はないのでしょうか?下記URIには、見当たりません。 http://php.plus-server.net/ref.uodbc.html

    • ベストアンサー
    • PHP