
test.csv とtest2.csvから作成したレコードセットをtest3.csvに出力したいのですが、
”指定した式は、いずれかの引数とデータ型が対応していません。”
とエラーが帰ってきます。
色々試したのですがうまくいきません、
作成したレコードセットをCSVファイルにエクスポートする方法を教えてください。
Private Sub コマンド6_Click()
Dim CN As ADODB.Connection
Dim RS As ADODB.Recordset
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\;" & _
"Extended Properties='Text;HDR=YES'"
Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel")
DoCmd.TransferText acExportDelim, , RS, "C:\test3.csv", True, ""
Set RS = Nothing
Set CN = Nothing
End Sub
No.3ベストアンサー
- 回答日時:
#2です
解決されたという解釈で良かったのでしょうか。
(記述を見直しました)(前のものでも一応動くとは思います)
ただ、気がかりなのがCドライブ直下と言う事で・・・・
(私はそこには作らないというだけの話ですが)
「test1.csv」「test2.csv」のありかを、「D:\HOGE」と仮定します。
作成する「test3.csv」の場所を「E:\hogehoge」と仮定します。
「E:\hogehoge\test3.csv」が存在したらエラーとなります。
「D:\HOGE」を★★に、「E:\hogehoge」を☆☆で置換えて記述したとすると
(#2の記述をチョッと変更しています。
変な改行表示されるので、一度メモ帳等にコピー&ペーストして確認ください)
Dim CN As ADODB.Connection
Dim sSql As String
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=★★;" & _
"Extended Properties='Text;HDR=YES'"
sSql = "SELECT * INTO [test3.csv] IN '☆☆'[Text;FMT=Delimited;HDR=YES;IMEX=0;]" _
& " FROM [test.csv] AS a LEFT JOIN [test2.csv] AS b ON a.tel = b.tel;"
CN.Execute sSql
Set CN = Nothing
※ この辺については、Web上のブログで見たような気が気ます。
(SQLで CSV出力指定記述とか・・・)
※ [test3.csv] の後の IN句の記述について、いろいろ確認を取られたらと思います。
30246kiku様
>解決されたという解釈で良かったのでしょうか。
前回頂いたコードで、CSVの置き場所を変更することで当初の目的は果たしました、
今回頂いたコードを参考に知識を深めたいと思います。
今回はご丁寧な対応を頂き大変助かりました。
有難うございました。
No.2
- 回答日時:
以下でどうなりますか。
「test3.csv」が存在していたらエラーになったと思います。
Dim CN As ADODB.Connection
Dim sSql As String
Set CN = New ADODB.Connection
CN.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=C:\;" & _
"Extended Properties='Text;HDR=YES'"
sSql = "SELECT * INTO [test3.csv] IN '' 'Text;FMT=Delimited;HDR=YES;IMEX=0;DATABASE=C:\'" _
& " FROM [test.csv] AS a LEFT JOIN [test2.csv] AS b ON a.tel = b.tel;"
CN.Execute sSql
Set CN = Nothing
この回答への補足
30246kiku様
CSVファイルの置き場所を変えて実行したところ
頂いたコードでtest3.csvの出力が出来ました。
こちらのパソコンの環境(ファイルアクセス権)によるエラーと考えられます。
頂いたコードで試しました、
>「test3.csv」が存在していたらエラーになったと思います。
test3.csvをC:\に配置してコマンドを実行すると以下エラーになります。
テーブル'test3#csv'は既に存在しています
次にtest3.csv無で実行すると下記エラーが表示されました
オブジェクト'test3.csv'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください
どうすればこの状況を乗り越える事が出来るのかもう少しだけお付き合い頂ければ大変助かります。
No.1
- 回答日時:
TransferText マクロ アクション
http://office.microsoft.com/ja-jp/access-help/HA …
「テーブル名」引数の説明より
---------------------------
テキスト データのインポート先、エクスポート元、またはリンク先の Access のテーブルの名前を指定します。また、エクスポート元として Access のクエリ (クエリ: テーブル内に格納されているデータについての問い合わせ、またはデータに対して処理を実行するための要求。クエリを使って複数のテーブルからデータを取り出して、そのデータをフォームまたはレポートのデータのソースとして使用できます。)名も入力できます。この引数は省略できません。
・・・・・・・
"TransferText/テキスト変換" アクションを使用している場合、エクスポートするデータは SQL ステートメント (SQL 文字列/ステートメント: SELECT、UPDATE、または DELETE などの SQL コマンドを定義し、WHERE および ORDER BY などの句を含む式。通常、SQL 文字列/ステートメントはクエリおよび集計関数で使用されます。)では指定できません。SQL ステートメントを使用する代わりに、クエリを作成して、そのクエリの名前をこの引数に指定します。
---------------------------
クエリが作れない状況なら
レコードセットを読みながら、テキストファイルに書き出す、
とか
Excel に CopyFromRecordset で貼り付け、CSVで保存する、
など。
早速のアドバイス有難うございます。
>クエリを作成して、そのクエリの名前をこの引数に指定します。
に従い
Set RS = CN.Execute("SELECT * FROM test.csv a LEFT JOIN test2.csv b ON a.tel = b.tel")
上記表記の後に下記追加しました
Set Qdf = CurrentDb.CreateQueryDef("test_q", RS)
今度は
実行時エラー 3421
データ型の変換エラーが発生しました
とエラーが出てしまいます、こちらも色々調べたのですが解決できません
出来ましたらアドバイス頂きたく存じます
お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!
このQ&Aを見た人はこんなQ&Aも見ています
-
AccessでSQL結果を直接csvに書き出すには?
Word(ワード)
-
Access 1レコードずつcsvで出力したい
その他(データベース)
-
Accessのテーブルデータを一気にVBAで追加したい・・
その他(データベース)
-
-
4
レコードを保存するコード アクセスvba
その他(Microsoft Office)
-
5
ACCESSのBookmarkプロパティの使い方
その他(データベース)
-
6
Accessの画面更新を一時的に停止する方法。
その他(データベース)
-
7
レコードセットにnullの場合
Visual Basic(VBA)
-
8
Accessでテーブル名やクエリ名一覧の抜き出し
Access(アクセス)
-
9
【エクセルVBA】DBのデータをCSVに
その他(プログラミング・Web制作)
-
10
Access クエリ実行が急に非常に遅くなりました。
Access(アクセス)
-
11
MS Accessでフォームの「開く時」と「読込み時」のイベントの違い
Access(アクセス)
-
12
ADOを使ったDBアクセス後のメモリ解放
その他(データベース)
-
13
SQLの速度をあげるには・・・
Visual Basic(VBA)
-
14
エクセルのラベルの値(文字列)を垂直方向で中央揃えにするには?
Excel(エクセル)
-
15
「RunSQL」と「Execute」の違い
Access(アクセス)
-
16
ADOでアクセスのレコードに複数のフィルタをかけるには?
Access(アクセス)
-
17
ACCESSフォーム入力後の確定
Access(アクセス)
-
18
access サブフォームにリストを表示させたいが一件しかレコードが表示されない
Access(アクセス)
-
19
Access 複数フォームを開き、画面の最上面にしたいフォームをコント
その他(データベース)
-
20
アクセス 壊れた? 「ファイルが見つかりません」
Access(アクセス)
関連するカテゴリからQ&Aを探す
おすすめ情報
このQ&Aを見た人がよく見るQ&A
デイリーランキングこのカテゴリの人気デイリーQ&Aランキング
-
データベースファイル(.db)を開...
-
将棋のDB。「この局面と同一の...
-
CSVファイルでテキストの改行の...
-
ACCESSのSQLで、NULLかNULLでな...
-
警察はスマホに保存した動画や...
-
最新の日付とその金額をクエリ...
-
テキストボックスにコントロー...
-
180g重量版レコードとは? 180...
-
Access Nz関数の合計値の小数点...
-
Accessを開きなおすとテキスト...
-
帳票フォームでのあるコンボボ...
-
DB2のSELECTでカンマ編集につい...
-
LEFT JOIN をしているのに表示...
-
エクスプローラーで「2つの条件...
-
縦書きテキストボックスの表示"...
-
20万行あるデータを動かしたい
-
更新クエリをリンクデータベー...
-
sql update で 抽出条件データ...
-
半角ハイフンに似た文字
-
データベースの勉強 公務員を目...
マンスリーランキングこのカテゴリの人気マンスリーQ&Aランキング
-
sql*loader 数値のロード
-
MySQLで連続csvファイルを読み...
-
作成したレコードセットのCSV出...
-
MySQL Date型にNULLが設定でき...
-
CSVを1行しかインポートしない...
-
BCPコマンドについて
-
データのインポートの速度について
-
insertを用いてテーブルにレコ...
-
MySQLデータベースにcsvファイ...
-
phpMyAdmin テキストインポート...
-
CSVファイルをインポートすると...
-
BAT処理でCSVデータのインポート
-
CSVファイルのインポートについて
-
csv形式のファイルをダウンロー...
-
access2000でインポート...
-
phpMyadminについて
-
SQLサーバーにcsv.ファイル...
-
検索できるマスターテーブルを...
-
データベースからWordpressを復...
-
データベースファイル(.db)を開...
おすすめ情報