• 締切済み

レコードセットの一括エクスポート

いつもお世話になっています。 早速質問させていただきます。 ADODBを使用してSQL ServerとVB間でデータのやりとりを しているのですが、レコードセットをテキスト形式で一括エクスポート したいのですが、どうにもやりかたがわからないのです。 XML形式で一括エクスポートすることはできたのですが、 使用したいのはテキスト形式なので、どうにもこうにも…。 (Saveメソッド使用しました。) XMLからテキストに変換するやりかたでもいいです。 すみませんが、ご教授願いたいです。

みんなの回答

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.2

考え方だけですが。 >一括でする理由とは、処理時間の短縮が第1であります。 ということでしたら、SQLに記述して、サーバの処理に任せるのが一番速いです。理由は、DBがおかれるマシンは通常他のマシンより高速なCPUをつんでるからです。 VB側で何とかしようとすると、「固定長」というフォーマットに加工する必要があるため、やはり時間がかかります。Mid()やFormat()で加工することになりますね。

guruguru2
質問者

お礼

2度の回答ありがとうございます。 やはりDBに任せて出力したほうが良いみたいですね。 ありがとうございました。

  • taka_tetsu
  • ベストアンサー率65% (1020/1553)
回答No.1

一括でする必要は? 1レコード、1フィールドずつ取得してファイルに書けばいいだけでは? テキストといっても区切りや改行コードを指定する必要がありますよね。

guruguru2
質問者

補足

遅くなって申し訳ありません。 一括でする理由とは、処理時間の短縮が第1であります。 それと、これは質問に記入し忘れてしまったのですが、 テキストデータといっても固定長レコードで出力したいので区切りは必要ないのです。 SQLで固定長レコードとして取得する方法も考えたのですが、 (Select Cast(年月 As Char(6)) + Cast(名前 As Char(20)) From NAME_A.LIST ↑こんな具合に(SQL Server使用)) データベースも関係なくVBのソースのほうでできれば一番効率的で良いと思って調べています。 こんなやり方もありますよ。的なことでもいいので、アドバイス願いたいです。

関連するQ&A

  • ADOレコードセットをExcelファイルへエクスポート

    ADOレコードセットをExcelファイルへエクスポート ADOのレコードセットをExcelファイルへ出力したいと考えています。 レコードセットを使用した場合、TransferSpreadsheet の様なメソッドは使えないのでしょうか? ファイルサーバーにAccessクエリを作成する事も考えたのですが、多数で使用する為、 トラブルが怖いので避けました。 レコードセットを直接出力できるメソッドor関数等はないものでしょうか? アドバイスよろしくお願いいたします。 m(__)m

  • レコードセットからレコードセットって作れますか?

    WindowsXP,VB6,SP5,で開発しています。 タイトルそのままなのですが、 ある事情で、まずはデータベース(Access)からレコードセットを作成しています。 そのレコードセットをもとに色々と抽出したいんです。 もし、データベースからSQL文で抽出するときみたいに、そのレコードセットを、 SUM(~とかGROUP化したりとかできればいいなあと思っているのですが、 その方法がわからず、2,3回遠回りしてレコードセットを作成してます。 レコードセットからレコードセットを作成することってできないのでしょうか? わかりにくくてすみませんが、どうぞよろしくお願いしますm(_ _)m

  • オープンしているレコードセットの中の最大値

    VB6でAccess2000です Dim RS As ADODB.Recordset Dim SQL,CN As String RS.Open SQL, CN, adOpenStatic という形で一度オープンしてしまったレコードセットにIDフィールドがあり、その最大値を取得したい場合、どのような方法を用いればいいのでしょうか?

  • レコードセットを保留中にするには?

    WINDOWSXP,VB6,SP5で開発しています。 レコードセットにデータをどんどん追加して、 最後にまとめてデータベースに追加する。 みたいなことしたいのですが、可能なのでしょうか? ちなみに、サーバはSQL使ってます。

  • レコードセットで得た結果をサブフォームに出力したい

    こんにちは。Access 2010のフォームについてお教え頂けないでしょうか。 下記URLのようにForm1があります。 http://kie.nu/yHO Form1には下記のオブジェクトがあります。 ・テキストボックス tb1 ・ボタン b1 ・サブフォーム sf1 またテーブルが1つあります。 ・テーブル T1 やりたいこと: テキストボックスにキーワードを入力して検索ボタンを押すと、検索結果がサブフォームに表示されるようにしたい。 条件: VBAでやりたい。 そこで下記のコードを書いてみました。 Private Sub cmd_exe_Click() Dim objADOCON As ADODB.Connection Dim objADORS As ADODB.Recordset Dim SQL As String Set objADOCON = Application.CurrentProject.Connection Set objADORS = New ADODB.Recordset SQL = "select * from T1 where keyword = '" & tb1 & "'" objADORS.Open SQL, objADOCON, adOpenKeyset, adLockOptimistic ここまではできて、無事にレコードセットも取得することができました。 しかし、ここでつまってしまって、どのように結果をサブフォームに出力していいのかわかりません。 こちらお教え頂けないでしょうか。宜しくお願いします。

  • ADOのレコードセットをローカルにキャッシュする方法

    ご質問させて頂きます。 MS SQL 2000 と VB 6.0 の環境で、ADO接続しています。 SQLサーバに接続し、データをレコードセットに取得したのですが、Connectionをクローズするとレコードセットも参照できなくなってしまいます。 Connectionをクローズ後もレコードセットを使えるようにする方法はありませんでしょうか? どうぞ宜しくお願いします。

  • SQL ServerからテキストにエクスポートしたデータをAccessやExcelで読み込みたい

    SQL Server内にあるデータをテキスト形式にしてエクスポートを行ったのですがいざ、開いてみるとごちゃごちゃに なっておりうまく読む事ができません。 これを、ExcelやAccessなどのデータに変換する方法、もしくはきちんと表列がソートされて読める方法を教えていただきたいです。 尚、テキスト形式へのエキスポートはSQLにある デフォルトの設定で行いました。 教示をお願いいたします。 ※SQL Serverから直接ExcelやAccessへエクスポートする 方法はエクスポートの途中にエラーが出てしまうので利用する事ができませんでした。あくまでテキストだけでしか エクスポートが成功しないのが前提です。

  • MySQLへのレコード追加

    VB6でMySQL4.1に接続して テーブル"table1"にレコードを追加したいんですけど MySQLには接続できるんですけど、新しいレコードを 追加できません。 エラーメッセージは  Unknown column 'ID'in'fieldlist' とでます。 教えてください。 Dim SQL As String Dim ID As Integer Dim name As String Dim cmd As ADODB.Command Set cmd = New ADODB.Command ID = Text1.Text name = Text2.Text SQL = "insert into table1(AID,Aname) values(ID,name) " cmd.ActiveConnection = cn cmd.CommandText = SQL cmd.Execute table1の内容は AID Aname ←フィールド名 -------------   1  suzuki 2 satou 3 takahasi みたいな感じです。

  • VBAでレコードセットの総レコード数を取得する方法

    Dim con As ADODB.Connection Dim rsData As ADODB.Recordset Dim DNSname$,USERname$,PASSw$,cnt&  Set con = CreateObject("ADODB.Connection")  con.Open "DSN=" & DNSname & "; UID= " USERname & "; PWD=" & PASSw  Set rsData = New ADODB.Recordset  rsData.Open SQL, con  Do While Not rsData.EOF   rsData.MoveLast   cnt=rsData.RecordCount   rsData.First  LOOP といいコードで総レコード数が取得できるかなとやってみたところ、rsData.MoveLastのところで、「行セットは逆フェッチをサポートしていません」というエラーが出ました。 なにかほかの方法で総レコード数を取得する方法があるのでしょうか? 自分で他に試したことは、rsData.EOFまでrsData.MoveNextでもっていきrsData.EOF-1レコードの.RecordCountを取得すしようと試みましたが、最後のレコードまできても.RecordCountは「-1」のまま変化しませんでした。レコードセットの呼び込み方が不味いのでしょうか?

  • レコード件数をファイル名にしてエクスポートしたい

    アクセスのクエリをテキスト形式でエクスポートして、そのテキストファイルの名前をクエリの名前とレコード数を繋げたものにしたいのですが何か方法を教えて頂けないでしょうか。。 ↓こんな風にしたいのです。 ----------------- クエリ名:q1 レコード件数:100件 ファイル名:q1_100 ----------------- 宜しくお願いします。