CSVへ複数件エクスポートができない問題の解決方法

このQ&Aのポイント
  • VBでオラクルにアクセスしてテーブルと列を取得し、日付によりデータを取得する際、一度しかCSVにエクスポートされない問題が発生しています。複数件エクスポートする方法を教えてください。
  • 現在の状況では、一度しかCSVに表示されない問題が発生しています。対象となるデータが複数件表示されるようにするには、どのような方法を取ればよいでしょうか?
  • VB6の環境でオラクルにアクセスし、定期点検実績テーブルから日付を条件にデータを取得し、CSVにエクスポートするコードがありますが、一度しか表示されません。複数件表示させる方法を教えてください。
回答を見る
  • ベストアンサー

CSVへ複数件エクスポートがしたい

VBでオラクルにアクセスしてテーブルと列をとり 日付によりデータを取るとのですが、一件しかCSVにエクスポートされません 2件3件とエクスポートするにはどうしたら宜しいでしょうか? よろしくお願いいたします。 環境はOS95 VB6 Oracle8 ーーーCSVファイルで表示したい事ーーー "コンテナ番号", "定期点検実施日" CT00001, 1999/12/01 CT00002, 1999/10/23 CT00003, 1998/07/07 複数表示させたい ーーー現在ーーー "コンテナ番号", "定期点検実施日" CT00001, 1999/12/01 一件しか表示されない ーーーソースーーー Wk_Sql = "" Wk_Sql = Wk_Sql & "SELECT *" '全てのの列 Wk_Sql = Wk_Sql & " FROM T_TenkenJsk" '定期点検実績テーブル Wk_Sql = Wk_Sql & " WHERE SUBSTR(T05_DateTenken, 1, 4) <= '" & G_DelYYYY & "'" '定期点検実施日 Wk_Sql = DB_SelectSql(Wk_Sql, Wk_Rs) Open Wk_FDir + "\" + Wk_FName For Output Access Write As #1 Write #1, "コンテナ番号", "定期点検実施日" Write #1, Cv_Null(Wk_Rs("T05_NumContner")),Cv_Null(Wk_Rs("T05_DateTenken")) Close #1

noname#63429
noname#63429

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

  • ベストアンサー
  • Mizyu
  • ベストアンサー率41% (245/593)
回答No.1

VBとOracleを何で接続してるかわからないので、なんともいえないのですが、、、 このソースを見る限りだと、一件のレコードを書き込んだだけで書き込みを終了しています。 ループさせて全件取得しなくてはならないのではないでしょうか? 以下、oo4oを用いた接続のサンプルです。 ----------------------------------------- 'Databaseとダイナセットを宣言 Dim dbOra As OraDatabase 'oo4o Database Object Dim dynOra as OraDynaset 'oo4o Dynaset Object 'SQLをダイナセットへ登録 Set dynOra = dbOra.DbCreateDynaset(Wk_Sql, 0&) Open Wk_FDir + "\" + Wk_FName For Output Access Write As #1 Write #1, "コンテナ番号", "定期点検実施日" Do While Not dynOra.EOF Write #1, Cv_Null(dynOra.Fields("T05_NumContner")),Cv_Null(dynOra.Fields("T05_DateTenken")) dynOra.MoveNext Loop Close #1 -------------------------------- CSVもテキストと同じですので、全件書き込まなくてはいけません。 下記URLはDBとVBの接続にかんする詳しいサイトです。

参考URL:
http://homepage2.nifty.com/inform/vbdb/

関連するQ&A

  • 次データ取得エラーについて

    sea_clear_sky8です。 [環境] OS 98SE PWS [質問内容] SQL CMD.CommandText = "SELECT * from test_t" このSQLだと下記のソースの部分が通り、データを表示 させることができます。 でも、 SQL CMD.CommandText = "select * from test_t " & _ "where name like '%" & Request("nm") & "%' " & _ "order by id " & _ "limit " & Request("page_num")*10 & ",10" だと次データ取得エラーと表示され、エラー番号3251が表示され 二つ目のデータから取得できません。 忙しいところすいませんが、ご教授願います。 エラー番号等で、インターネットで調べましたが、原因がわからない 状態です。よろしくお願いします。 [ソース] Do UntiL RS.EOF=true For i = 0 to RS.Fields.Count-1 Response.write RS(i).name k = RS(i).name + CSTR(RS.bookmark) Response.write "<input name="&k&" value="&RS(i)&">" next Response.write "<BR>" RS.MoveNext Loop

  • JSPで複数テーブルのSQL実行後に値を送る方法を教えて下さい!

    いつもお世話になっております。 JSPにてUNION ALLを使用してSQLを実行します。 (ソースは必要部分のみ記載致します) SQL実行後にテーブルのカラムにある「番号」と「テーブル名」を <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> の部分で送りたいのですがどの様に記述すればいいのか調べてみましたが 分かりませんでした。 説明が分かりにくいかもしれませんがどうかご教示下さいませ。 ちなみに番号はT_2005・T_2006・T_2007 共に1から順にオートナンバーで振られています。 String str = request.getParameter("Num"); rs = stmt.executeQuery ("SELECT * FROM T_2005 where ID='"+ str +"' union all SELECT * FROM T_2006 where ID='"+ str +"' union all SELECT * FROM T_2007 where ID='"+ str +"'"); while (rs.next()){ String year = rs.getString("年齢"); String number = rs.getString("電話番号"); String add = rs.getString("住所"); %> <TR> <FORM method="post" action="Next_View.jsp?table=????"> <input type="hidden" name="num" value="<%= rs.getString("番号")%>"> <TD><%= year %></TD> <TD><%= number %></TD> <TD><%= add %></TD> <%-- 詳細ボタンを表示 --%> <input type="submit" value="詳細"> </form> </TD> </TR>

    • ベストアンサー
    • Java
  • WHERE レコードが抽出されない

    ADOでSQL文を作ってるのですが WHERE句がうまくできません。 rs.Open "T_テーブル", cn, adOpenKeyset, adLockOptimistic rs.Filter = "URL like '#*'" なら、うまくいくのですが、 Filterを使うのをやめて、WHEREに書きかえると、エラーにはならないのですが 取得レコードが0件になります。 rs.Open "T_テーブル WHERE [URL] like '#*';", cn, adOpenKeyset, adLockOptimistic も rs.Open "T_テーブル WHERE URL like '#*';", cn, adOpenKeyset, adLockOptimistic も、0件が返ります。 何がおかしいのでしょうか? URLフィールドで、#で始まるレコードを抽出したいです。

  • レコードセットのループ処理でエラー・・・

    簡単なことだと思うのですが、解決できなくこまっております。お助けください。 以下のコーディングで、データの取得は出来ているのですが、「Do Until rs1.EOF」でエラーとなります。 SOURCE----------------------------------------- sql = "Select No from t01" Recordset.Open sql, dbc, 3 If rs1.EOF Then Response.Write "データナシ<BR>" ←表示されません。 else Do Until rs1.EOF ←この行でエラーとなります。 Response.Write "No=" & rs1("No").Value rs1.MoveNext Loop end if Error-------------------------------------------- ADODB.Field (0x80020009) BOF と EOF のいずれかが True になっているか、または現在のレコードが削除されています。要求された操作には、現在のレコードが必要です。 因みに、Do Untilを使用せず  Response.Write "No=" & rs1("No").Value  rs1.MoveNext  Response.Write "No=" & rs1("No").Value と記述すると正常にデータが表示されます。 「Do Until rs1.EOF」で発生するエラーの回避方法を御教示願います。

  • パスワードをかける

    初めまして。初心者です。 社員番号、パスワードを入力し、個人のページに飛ぶような仕組みを作りたい のですが、 かなり苦労しています。 Requestの社員番号と、データベースの社員番号を比較し、 間違っていれば、エラーが出るようにし、 あっていれば、次のページに進むようにしたいのです。 見よう見まねで、↓のように作ってみたのですが・・・ これでは全然ダメだという事は分かるのですが、 どうしたらいいのか分かりません。 どうかお教えください。 データベース名:career_web テーブル:pass (社員番号とパスワードのテーブル) テーブル:plan (社員番号と、個人ページに載せたい情報(所属部署等) のテーブル) <% Set cn = Server.CreateObject("ADODB.Connection") cn.Open "career_web" sql = "SELECT *" sql = sql & " FROM pass" sql = sql & " WHERE (社員番号 = '" & Request("社員番号"))" On Error Resume Next Set rs1 = cn.Execute(sql) If (rs1("パスワード") <> (rs1(" & Request("パスワード")) Then Response.Write "<tr><td><font size='2'>正しいパスワードを入力し てください</font></td></tr>"   Else End If rs1.Close %> データベースの社員番号と、Requestの社員番号が 一致しない場合に、 ”正しいパスワードを入力してください” と出し、 一致した場合は blankのページに飛ぶような設定にしたいのですが、 ルールの定義の仕方がまったく分からないのです。

  • ASPでRecordCountが使用できない

    Accessの100件のデータを10行づつブラウザに表示したいのですが、rs.PageCount、rsRecordCountなど色々と試しましたが正しい結果が得られず 困っています。 rs.AbsolutePage、Rs.PageSizなども試してみましたが、やはり結果は-1しか返されません。 Set db1=Server.CreateObject("ADODB.Connection") db1.Provider="Microsoft.Jet.OLEDB.4.0" db1.ConnectionString=Server.MapPath("../master.mdb") db1.Mode=1 db1.Open ' Set rs1=Server.CreateObject("ADODB.Recordset") Rs1.Pagesize = 5 ' keyword = "ABC" ' SQL1a = "SELECT top 5 * FROM dbFILE WHERE dbTABEL Like '%" & Keyword & "%'" Set Rs1=db1.Execute(SQL1a) Response.Write rs1.PageCount このようなリストで試しています。よき方法があれば是非 教えて下さい。 最終的にはSQL 7.0に置き換える予定です。 宜しく、お願いします。

  • Access2000 VBAについて質問です。

    Access2000 VBAについて質問です。 下記ソースコードでUPDATE(更新)しているのですが、バチンとAccessが落ちてしまいます。 Private sub UPDATESQL() StrSQL = "SELECT * FROM T_StandardList WHERE ID = " & Me.ID Set ct = CurrentProject.Connection RS.CursorLocation = adUseClient RS.Open StrSQL, ct, adOpenDynamic, adLockOptimistic RS![filed1] = Me![Value1] RS![filed2] = Me![Value2] RS![filed3] = Me![Value3] RS![filed4] = Me![Value4]      Call CloseButton_Click Set RS = Nothing Set ct = Nothing End Sub Private Sub CloseButton_Click() DoCmd.SetWarnings False 'SQLの実行 DoCmd.RunSQL "DELETE FROM T_TempList" DoCmd.Close acForm, Me.Name DoCmd.SetWarnings True End Sub CloseButtonをクリックしても落ちることがあるので、CloseButton_Click関数が怪しいとは感じます。 どなたか詳しい方アドバイスよろしくお願いいたします。 m(_ _)m

  • クエリで求めた空き番を登録したい

    詰まってしまったので質問させていただきます。 登録番号の空き番号を求めることが出来るクエリを使い空いている番号を埋めたいと思います。 個人T…テーブル。空き番号をもつ"登録番号"フィールドと空き番号がない綺麗な"連番"フィールドを持つ ZZZZ空き番号抽出クエリ…"登録番号"の空き番号を昇順で並べた"仮想ID"がある Private Sub Sample6() Dim Db As DAO.Database Dim rs As DAO.Recordset Dim i As Variant Dim J As Variant Set Db = CurrentDb Set rs = Db.OpenRecordset("個人T") J = Right(DMax("連番", "個人T"), 4) i = 0 While i < J rs.AddNew i = DMin("仮想ID", "ZZZZ空き番号抽出クエリ") →→ rs(登録番号) = "ZZZZ" & i rs.Update rs.MoveNext Wend End Sub これで実行すると「このコレクションには項目がありません。」 と「rs(登録番号) = "ZZZZ" & i」がエラーになってしまいます。 書き方自体が悪いのはものすごく分かるのですが・・・ どこを直したら正常に空き番号を埋めることができるでしょうか?

  • PHPとPostgreSQL接続 (スキーマ)

    いつもお世話になっております。 現在、PHP(5.3.1)とPostgreSQL(9.2)で開発をしております。 エラーが発生しており大変困っております。 こちらが発生するエラーです。 Warning: pg_exec() [function.pg-exec]: Query failed: ERROR: schema スキーマが見つからないとのことです。 そして、以下がコードとなります。 <?php // PostgreSQL Connect if (!($cn = pg_connect("host=*** port=*** user=*** password=*** dbname=***"))) { die; } // PostgreSQL Select $sql = "select * from t_test.na1"; if (!($rs = pg_exec($sql))) { die; } // PostgreSQL Get Records $ct = pg_numrows($rs); for ($i = 0; $i < $ct; $i++) { $item = pg_fetch_array($rs, $i); $txt = "${item[1]}"; } // PostgreSQL Disconnect pg_close($cn); ?> 現在のデータベースのスキーマについてですが「na1」と「public」の2つが存在しています。 試しに、na1とpublicのテーブルをまったく同じにして SQLの部分を「select * from t_test」に変更すると「public」側のテーブルが覗けます。 しかし、SQLの部分を「select * from t_test.na1」に変更すると「スキーマが見つかりません」 というエラーが発生してしまいます。 スキーマがあるにもかかわらずこのエラーがでてしまうため原因が分からず困っております。 もしお分かりになる方いらっしゃいましたら、教えていただければと思います。 何卒よろしくお願いします。

    • ベストアンサー
    • PHP
  • WHERE句だと抽出できない VBA ADO

    アクセスのADOについて質問があります。 SQL文の中でWHERE句を使ってフィルタをすると返り値が0件になるのに、 rs.Open strSQLした後に、 rs.Filterで抽出すると、適切な数値が返ります。 具体的に言うと 【1】 strSQL = "SELECT T_会社名.*, T_会社名.住所 FROM T_会社名 WHERE (((T_会社名.住所) Like ""*埼玉*""));" rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic i = rs.RecordCount 【2】 strSQL = "SELECT T_会社名.*, T_会社名.住所 FROM T_会社名;" rs.Open strSQL, cn, adOpenKeyset, adLockOptimistic rs.Filter = "T_会社名.住所 like '%埼玉%'" i = rs.RecordCount だと、【2】が、適切な数値が返ります。 なぜ【1】はダメなのでしょうか?

専門家に質問してみよう