ACCESS97で作成したファイルをACCESS2002に変換したいのですが、
変換中にコンパイルエラー発生しましたとメッセージが表示されてしまいました。
ファイル自体は変換できておりエラーテーブルを見るとモジュールが変換エラーを起こしていました。そのモジュールを実行させるとやはりエラーが出て止まってしまいます。

~モジュールの内容は~
テーブルを削除するために削除クエリーの実行(これはうまく動いてます。)
フォームに入力されたパスのCSVファイルをインポートする。定義名:CSVインポート定義"インポート先:"CSVテーブル"
(これがうまく動かないようです。実行させると「このファイルをインポートできません」とメッセージがでます。)
以下のものになります。

Option Compare Database
Option Explicit

'------------------------------------------------------------
' CSVインポート
'
'------------------------------------------------------------
Function CSVインポート()
On Error GoTo CSVインポート_Err

Dim parm1 As String

parm1 = Forms!報告書作成!インポートパス & " "

' 入力データ削除query
DoCmd.OpenQuery "全て削除クエリー", acNormal, acEdit
' インポート実施

DoCmd.TransferText acImportDelim, "CSVインポート定義", "CSVテーブル", parm1, False, ""


CSVインポート_Exit:
Exit Function

CSVインポート_Err:

MsgBox Error$
Resume CSVインポート_Exit

End Function

もし不足な点がありましたら補足させていただきます。
よろしくお願いします。

このQ&Aに関連する最新のQ&A

A 回答 (2件)

Access2000SR-1以降で拡張子がDATや拡張子なしではインポート出来ない仕様(笑)の為という事で宜しいでしょうか?


これを解決するには拡張子TXTでインポートするしかないと思います。

例えばインポート前に
name parm1 as parm1 & ".TXT"
として拡張子を変更し
DoCmd.TransferText acImportDelim, "CSVインポート定義", "CSVテーブル", parm1 & ".TXT" , False, ""
とするような事をすれば良いかと思います。

過去に回答した内容も参考にして下さい。

参考URL:http://oshiete1.goo.ne.jp/kotaeru.php3?q=149319
    • good
    • 0
この回答へのお礼

お疲れ様です。
なんどもありがとうございます。
たいへん申し訳ございませんが・・・・解決しました。

原因は
<parm1 = Forms!報告書作成!インポートパス & " " >

の部分の「" "」の部分のスペースを無くしたらインポートできました
じっさい97のときは「" "」でインポート出来たのですが・・・
なぜか2002の場合は「""」としないと認識してくれませんでした。

参考のURLはとてもためになりました。
ありがとうございます。

お礼日時:2002/02/12 15:46

もしかしてインポートしようとしている拡張子がDATとか拡張子なしとかになっていなですか?TXTにしてインポートできればAccess2000のSP1にした時拡張子がDATでインポート出来なくなったのと同様だと思うので拡張子をTXTに変えて作業して見てください。



確認としては手動で普通にインポートして見て同様の結果(エラー)になれば拡張子が原因だと思います。
    • good
    • 0
この回答へのお礼

回答ありがとうございます。
早速手動での確認作業を行いました。
1回目は普通に手動でのインポート
2回目はインポート定義(うまくいかないモジュールで使用していた)を使用しインポート

両方とも問題なくインポートできました。
・・・という結果です。

すいません補足です。
ACCESSのバージョンですが

古いほうが「ACCESS97-SR2」を使用しています。
新しいほうが「ACCESS2002」になります。

なにか良い手がありましたら宜しくお願いします。

お礼日時:2002/02/12 12:21

このQ&Aに関連する人気のQ&A

お探しのQ&Aが見つからない時は、教えて!gooで質問しましょう!

このQ&Aを見た人が検索しているワード

このQ&Aと関連する良く見られている質問

Qコンパイル環境の違いによる、浮動少数点の違い

不動少数(float)を使った、c言語の演算プログラムを作っています。

Aマシン(CentOS5, gcc3.4)でコンパイルした、"test_a.so"と"test_a.a"について、
Aマシンで実行した結果、両者の結果は一致します。

Bマシン(Fedora5, gcc3.0)でコンパイルした、"test_b.so"と"test_b.a"について、
Bマシンで実行した結果、両者の結果は一致します。
Aマシンで実行した結果、両者の結果が異なります。

結果の比較をすると、以下のようになります。
"test_a.so"=="test_a.a"!="test_b.so"!="test_b.a"

(1)コンパイル環境と実行環境が違うと、浮動少数の演算に違いがでることがありますか?
(2)コンパイル環境と実行環境が違うと、so と aに違いがでることがありますか?

上記2点について、ご存知の方いらっしゃいましたら教えてください。
お願い致します。

Aベストアンサー

ちなみに、
"test_a.so"と"test_a.a"をBマシンで実行した結果はどうなりますか?

理屈だけで言えば、
・コンパイルラによるの構文解析及び変換処理の違い
・実行ファイルが使用する浮動小数点ライブラリの違い
で結果が変わる可能性はあります。

QACCESSにCSVインポート時の文字化け

お世話になります。
あるCSVデータをアクセスの外部データの取り込み作業をする際、
例えば
レ003005 は Ś003005
レ003002 は ±003002
カ025002 は ¶025002
の様に文字化けをおこします。
なぜこのような文字化けが起こるのか、また対処法がおわかりの方、よろしくお願いします。
なおACCESS2000を使用しています。

Aベストアンサー

souta_nさん、こんにちは。

テキストインポートウィザードの最初の画面で、
左下に「設定」ボタンがないですか?

ここをクリックすると、
文字コードを設定できる画面に入れますので、
ここで適当な文字コードに設定してやってください。
(ShiftJISとかUnicodeとか。)

文字コードがわからないときは、
手当たり次第にやってみると、文字化けしないものが見つかると思います。

Qビルドとコンパイルの違い

ビルドとコンパイルの違いがわかりません。
ご存知の方がいらっしゃいましたら教えていただけるとありがたいです。よろしくお願いいたします。

Aベストアンサー

ビルド=コンパイル+リンク
コンパイル=ソースコードを解析し、オブジェクトファイルを作成すること。
リンク=上記のオブジェクトファイルにライブラリを結合し、実行可能ファイルを作成すること。

Q【ACCESS2002】csv形式データのインポートエラー

ACCESS2002を使用しています。

csv形式のデータをインポートしようとしますと、「オブジェクト'(ファイル名)'が見つかりませんでした。オブジェクトが存在していること、名前やパス名が正しいことを確認してください。」というエラーメッセージが表示されます。
ファイルが破損しているのでしょうか?

よろしくお願いします。

Aベストアンサー

マニュアル操作でインポートするのでしたらパスは関係ないですね。

エディタで開けますか?
テキストの内容は正常なのでしょうか?
0Byteだったりとかはないのでしたら。
やはり保存しなおしてインポートできるかどうか確認してください。

Qコンパイル言語とインタープリター言語の違いについて

コンパイルするプログラミング言語とインタープリターする
プログラミング言語の違いについて教えてください。
特に、開発上および運営上の利点・欠点についてお願いします。

また、CGIでは、PHPやPERLなどのインタープリター言語が
主流ですが、その理由とC言語などで組むのと比較して、
どのような利点があるのか教えてください。

Aベストアンサー

現在ではもはや古典的な「コンパイル言語」「インタープリタ言語」の区別は意味を持たないでしょう。
Cは確かにターゲットのCPU/OSの環境専用のマシン語にコンパイルされ、実行されますが、Javaや.NET用言語では、ソースプログラムをそれぞれの仮想マシンの仮想マシンコードにコンパイルしてオブジェクトファイルを作り、仮想マシンがそのコードをインタープリトします。

また、PerlやRuby等に置いてもソースを中間コードにコンパイルしてからその中間コードをインタープリトします。

従って、
・純粋なコンパイル言語・・・CPU/OS等環境依存のマシン語ファイルをつくり実行する
・その他のいわゆるコンパイル言語・・・あらかじめ中間コードファイルにコンパイルしておき、その中間コードをインタープリトして実行する
・いわゆるインタープリター言語・・・実行の最初に中間コードにコンパイルしそれをインタープリトして実行する

運営上の問題
・いわゆるコンパイル言語・・・ソースファイルとオブジェクトファイルの関連づけをきちんと管理する必要がある。管理しないとエラー発生時にどのソースファイルを調べればいいかわからない
・純粋なコンパイル言語・・・上記に加えて、異なる環境で動かすためには再コンパイルとテストが必要
・いわゆるインタープリタ言語・・・何度も何度も実行される場合、コンパイルの時間が実行速度に影響する(ウェブアプリでの利用では一度できた中間コードをHTTPサーバープログラム中に保持することでコンパイルの繰り返しを防ぐ工夫がされることが多い)

特定のOS環境でのみ使える機能をつかったプログラムは、どの形式であろうが、その特定の環境でしか使えません。

現在ではもはや古典的な「コンパイル言語」「インタープリタ言語」の区別は意味を持たないでしょう。
Cは確かにターゲットのCPU/OSの環境専用のマシン語にコンパイルされ、実行されますが、Javaや.NET用言語では、ソースプログラムをそれぞれの仮想マシンの仮想マシンコードにコンパイルしてオブジェクトファイルを作り、仮想マシンがそのコードをインタープリトします。

また、PerlやRuby等に置いてもソースを中間コードにコンパイルしてからその中間コードをインタープリトします。

従って、
・純粋なコ...続きを読む

Qアクセスと同フォルダのCSVファイルをインポートしたい

初心者で質問がわかりにくかったらすみません。
アクセスで、CSVファイルを取込みたいです。
下記のような構文で、取込む方法はわかりました。

Private Sub コマンド62_Click()
DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _
"請求書", "C:\Documents and Settings\user3\デスクトップ\受付番号アクセス\これ!\請求書.csv", True
End Sub

しかし、これだと常に取込むCSVファイルが同じ場所ではないと、いけないので、他のPCで使用するとエラーになってしまいます。
なので、他のPCに移した場合でも、いちいち構文を修正せずに、
この構文が作成してあるアクセスと同フォルダの”請求書.csv”というファイル名のCSVデータを取込めるような、構文が知りたいです。

お手数ですが、教えてください。

Aベストアンサー

Access2000以降に限られますが、
DoCmd.TransferText acImportDelim, "請求書csvインポート定義", _
"請求書", CurrentProject.Path & \請求書.csv", True

Q激しくカテ違いかもしれませんが、コンパイル後exeがウィルス感染?

お疲れ様です。
激しくカテゴリ違いかもしれませんが、よろしくお願い致します。

環境
OS:windows vista
開発環境:visual c++ 2008 express edition
セキュリティ:SOURCE NEXT(ウィルスセキュリティーZERO)

上記でwinsock系の関数を使ったプログラムをコンパイル(Release版)しexeを作成すると「Trojan」ウィルスとして検知されてしまいます。
※同じプログラムをDebug版でコンパイルした時には起きません。

本当に「Trojan」ウィルスに感染しているものなのか?
それとも誤検知なのか?
なにかしら情報をお持ちの方、申し訳ありませんが情報がありましたら提供の程お願い申しあげます。

Aベストアンサー

自作プログラムという事であれば誤検知ということで良いと思います
ZEROではありませんが昔同様な事例を経験したことはあります

ただ一応他のスキャンプログラムでも確認した方が良いでしょう
(ZEROは余り評判よくないので乗り換えた方が良いかも)

QVBA 複数のCSVファイルを一度にインポートするには?

お世話になります
■概要
Accessのボタンで複数のCSVファイルを一括にひとつのテーブルにインポートさせたいのですが

■内容
テキストボックス、参照ボタン、実行ボタンをフォーム上に設置
参照ボタンでダイアログボックスを表示させCSV複数選択し
選択内容がテキストへ反映。
実行ボタンで選択された複数CSVをインポートさせたいです

当方初心者なのでVBA等の回答があれば幸いです
ご教授よろしくお願い致します。

Aベストアンサー

#3です。
当方、Access2000ですので、WindowsAPIのお世話にならないと、ファイル選択のダイアログが使えません。
http://www.accessclub.jp/samplefile/samplefile_78.htm
を改造して、複数選択可能にした事がありますが、2002以降の方には意味がありません。
参考URLはご参考になりませんか。検証できる環境がないので、外していたらすみません。
>.AllowMultiSelect = true
に変更して、複数選択可能にしてやると
>For each varSelectedFile In .SelectedItems

>Next
の所で、選択したファイルに対して、順次処理が出来ると思います。
>テキストボックス内にファイル名を書き込み
を行う必要は無いと思いますが、いかがでしょう。

参考URL:http://www.accessclub.jp/samplefile/samplefile_159.htm

Qgcc バージョン違いによるコンパイルエラー

C言語でWeb系のプログラムを作成している者です。
以前まで、OSはFreeBSD 4.11-RELEASE-p12・gccのバージョンは2.95.4でコンパイルできていたプログラムが、OSはFreeBSD 5.4-RELEASE-p8・gccのバージョンは・gccのバージョンは 3.4.2で、今まで出なかったようなエラーが沢山出現し、コンパイルできなくなってしまいました。

OSをインストールし直すのは、既に稼働中のサイトですので厳しく、GCCのバージョンを下げるかソースを書き換えるかして対処する方向で行きたいと考えております。
しかし、gccの2.95.4の圧縮ファイルはもう、gccの公式サイトに落ちておらず、バージョンダウンは難しそうです。

gccのバージョンによるコンパイルエラーを乗り越えた方、ご指摘など有りましたらお教えくださると幸いです。

Aベストアンサー

> ソースコードの添付は、会社のものですのでちょっと厳しいので、部分的に…

全文は必要ないのです。エラーが発生した部分を、エラーが再現可能な形で提示してもらえれば、おそらく問題点を指摘できます。

> int a = 0;
> char b[2] = "";
> char *c[256] = {0};
> こういった、宣言の指定部分で特にエラーが出ているようですので、こちらの表記が問題なのでしょうか。

上記の表記自体は問題ありません。ただ、同じ変数に対する初期化が複数回行われていると、

error: redefinition of parameter '○○'
error: previous definition of '○○' was here

ということになります。
具体的には、

int a = 1;
/* 別の宣言並び */
int a = 1;

のように、同じ変数を二回初期化した場合です。

QACCESSでCSVファイルをインポートすると最初の列が1桁になってしまう

ACCESS2002でCSVファイルをインポートしたところ、
7桁あるはずの最初の列が1桁になってしまいます。
具体的には下記のとおりです。
不足する情報があればおっしゃってください。

<<CSVファイル>>
"社員番号","○○○","○○○",・・・・・
"6002343","nnnnn","nnnnn",・・・・・

<<インポート後>>
社員番号|○○○|○○○|・・・・・
6    |nnnnn |nnnnn|・・・・・

なお、"は文字列の区切り文字としています。
試しに"を文字列の区切り文字としないでインポートしたところ、
|"社員番号"|"○○○"|"○○○"|・・・・・
|"6002343" |"nnnnn"|"nnnnn"|・・・・・
となりました。
excelで出来るように置換で"を消せればそれでもokです。
ご回答をお願いします。

Aベストアンサー

この点、良く質問に出ます。他に良い方法が無ければ、また下記のようなことに興味があればご参考に。
(例 CSVデータ)メモ帳で
"111","sdf","223","gfh","2345"
"223","dfg","4566","hjkk","534"
"0023","dwwfg","456","hjkk","134"
"0003","dddfg","566","hkk","3234"
(アクセスのモジュール)
Sub test01()
Dim d(100)
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("data2")
rst.MoveFirst
'--------
Dim a
Open "a14.csv" For Input As #1
While Not EOF(1)
Line Input #1, a
st = 1
i = 1
p01:
p = InStr(st, a, ",")
If p = 0 Then
w = Mid(a, st, Len(a) - st)
d(i) = Mid(w, 2, Len(w) - 2)
' MsgBox d(i)
GoTo p02
Else
w = Mid(a, st, p - st)
d(i) = Mid(w, 2, Len(w) - 2)
' MsgBox d(i)
st = p + 1
i = i + 1
End If
GoTo p01
p02:
'------------mdb更新
rst.AddNew
rst![あ] = d(1)
rst![い] = d(2)
rst![う] = d(3)
rst![え] = d(4)
'------
rst.Update
rst.MoveNext
'------------
Wend
Close #1
rst.Close
End Sub

(結果)テーブル
IDあういえ
14111223sdfgfh
152234566dfghjkk
160023456dwwfghjkk
170003566dddfghkk

この点、良く質問に出ます。他に良い方法が無ければ、また下記のようなことに興味があればご参考に。
(例 CSVデータ)メモ帳で
"111","sdf","223","gfh","2345"
"223","dfg","4566","hjkk","534"
"0023","dwwfg","456","hjkk","134"
"0003","dddfg","566","hkk","3234"
(アクセスのモジュール)
Sub test01()
Dim d(100)
Dim dbs As Database
Dim rst As Recordset
Set dbs = CurrentDb
Set rst = dbs.OpenRecordset("data2")
rst.MoveFirst
'--------
Dim a
Open "a14.csv" For Input A...続きを読む


人気Q&Aランキング

おすすめ情報