• 締切済み

Access VBA エラー対処について

Accessのエラーで、困っています。よろしくお願いします。 CSVデータをインポートする時に、インポート先のテーブルにオートナンバーをつける処理にしています。 毎回インポートする時には、オートナンバーをリセットしたいので、ALTER文をいれたのですが、処理を流すと、 ALTER…文の箇所で、「ほかのユーザーかプロセスで使用…、ロックできません」とエラーMSGがでてきます。 いろいろ調べてみたのですが、わかりません。 原因と対処方法のヒントがあればお願いします。

みんなの回答

  • nicotinism
  • ベストアンサー率70% (1019/1452)
回答No.1

ALTER ・・・がおかしいのか、その前の処理で非同期的に行われているためなのか、 はたまた、エラーメッセージの通りに誰かが使用中なのか、・・・ 実際のコード全体を拝見しないことには、サッパリ分かりませんよ。

全文を見る
すると、全ての回答が全文表示されます。

関連するQ&A

  • Access インポート時のエラー処理

    お世話になります。 Access2010 csvファイルをインポートするツールを作成しました。 フォーム上に設置した「インポート」ボタンを押すと、所定のcsvファイル をインポートします。 ※事前にtempテーブルを作成しておき、そこにインポートします。 DoCmd.TransferText acImportDelim, , temp, 所定のパス, True <質問> インポート時に、稀にデータ変換エラーとなります。 データ変換エラーに限らず、エラーが発生した場合はエラーメッセージを 表示し、処理を中断したいのですが、どのようにすればよいのでしょうか。 ※データ変換エラーの場合、特にエラーメッセージも表示されず、普通に  処理が進んでしまうので、エラーが出ていたことすら気づきません。 インポート後、作成されたエラーテーブルの有無チェックすればいいかと 思ったのですが、それだとどのような内容のエラーなのか、そのエラー テーブルを開いてみないと分かりません。 ※当該ツールの使用者はAccess Runtimeを使っているので、エラーテーブル  の中身を確認することは出来ません。 エラーコードを拾ってそれに該当するエラーメッセージを表示させることに なるかと思うのですが、その拾い方やエラーコードが分からずにいます。 ご教示の程、宜しくお願い致します。

  • Access VBA TransferTextについて

    すみませんAccess初心者です。 VBAのTransferTextでCSVファイルをAccessnoデータベースにインポートしようとしてるのですが、 あるフィールドが400バイトのデータがある場合は 255バイト目までしかインポート出来ないようになっているのでしょうか? もしそうであれば、他にインポートする方法はありますか? CSVファイルを1行ずつ読み込み、1フィールドずつテーブルに格納するという処理を行わなければいけないのでしょうか? よろしくお願いいたします。

  • アクセスでオートナンバーをリセットするには?

    Accessで連番をふるプロセスで質問です。 データをあるテーブルに追加した時に、連番をふりたいと考えています。 最も簡単なのはオートナンバーフィールドを設定する方法なのですが、この場合一つ欠点があります。 それはレコードを全削除した場合でもナンバーがリセットされないという事です。 追加クエリでテーブルにデータを追加する前に必ずテーブルのレコードを全削除するのですが、 この際にオートナンバーも一緒にリセットする方法は無いでしょうか? また、質問の題名とは変わってしまうかもしれませんが、 オートナンバーを使用せずにレコードに連番をふる方法があればご教授下さい。

  • Access VBA CSVファイルのインポート

    お世話になります。 VBAにてCSVファイル(タブ区切り)をインポートするのに、 以下のように記述してますが、エラーとなります。 なお、インポート先のtempテーブルはインポートするCSVファイルの フィールドと同じ並びで予め作成したものです。 DoCmd.TransferText acImportDelim, , "temp", path, True 「実行時エラー2391 貼り付け先のtempテーブルには、'フィールド1_ フィールド2_フィールド3'フィールドがありません。」 このエラーを見る限り、フィールド1~3が一つのフィールドとして 認識されているように見受けられます。 タブ区切りなのか、カンマ区切りなのかを指定するようなパラメタは あるのでしょうか。 なお、当該CSVファイルをウィザードより手動でインポートする分には 問題無くインポート出来ます。 ************** インポートするCSVファイルはユーザーにより見出し(フィールド)の 並びが異なる場合がある為、インポート定義を予め作っておくことが できない状況です。 ご教授の程、宜しくお願い致します。

  • access 3211エラー

    access についての質問です。 現在、sqlにてテーブルを作成してそのテーブルをレコードソースとしてサブフォームなどの帳票フォームを表示したりしてるのですが、二回に一回は 【実行時エラー 3211 現在ほかのユーザーまたはプロセスで使用されているのでロックできませんでした】 となってしまいます。 原因はなんでしょうか?

  • Access csvファイルの取り込み

    Access2021 2箇所の保存先の違う所からcsvファイルの取り込みについて伺います。 csv取り込みボタンは、2つ用意しています。 1つ目のボタンに、コード記述して動作確認は正常に動作して他のボタンも正常に動作。 2つ目にのボタンに、csvの格納パス名のみ変更後コード記述して動作確認したら全てのボタンが反応しなくなりました。 動作としては、削除クエリでテーブルのデータを削除してから、指定したフォルダからcsvファイルを選択して取り込ます。 同じテーブルを使用して、格納先の違うcsvファイルを使用する操作になります。 コードは、以下の通りです。 ①ボタン1 Private Sub コマンド61_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名①" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ②ボタン2 Private Sub コマンド62_Click() '削除クエリ実行 DoCmd.SetWarnings False DoCmd.OpenQuery "テーブルデータ削除" DoCmd.SetWarnings True Dim msg As String msg = getFilePicker If msg = "" Then Exit Sub On Error GoTo err_sample DoCmd.TransferText acImportDelim, , "インポート先テーブル名", msg, True MsgBox "インポートが終了しました。", vbInformation + vbOKOnly, "処理完了" Exit Sub err_sample: Select Case Err.Number Case 3011 MsgBox "ファイルが見つかりません。処理を終了します。" Case Else MsgBox Err.Number & ":" & Err.Description End Select End Sub Function getFilePicker(Optional dTitle As String = "ファイル選択") '2003以降 Const msoFileDialogFilePicker As Integer = 3 Dim fDlg As Object Set fDlg = Application.FileDialog(msoFileDialogFilePicker) fDlg.Title = dTitle fDlg.InitialFileName = "csvインポートデータのフォルダパス名②" fDlg.AllowMultiSelect = False fDlg.Filters.Clear fDlg.Filters.Add "すべてのファイル", "*.*" fDlg.Filters.Add "CSV ファイル (*.csv)", "*.csv" fDlg.FilterIndex = 1 If fDlg.Show Then getFilePicker = fDlg.SelectedItems(1) Else getFilePicker = "" Me.Refresh End Function ご教授の程、宜しくお願い致します。

  • Access2010でVBAでのインポート

    csvファイルを指定したテーブルにインポートさせるのですが、この最初のフィールドに主キーを付与させようとしています。手動でインポートする際はメニューで指定するので主キーが付与されるのですが、VBAではcsvファイルそのままの状態でしかインポートされません。 このテーブルは、毎月更新させるので、一度データを削除してインポートさせます。 Mypath & Fdnは階層指定です。 いろいろネットで調べて下記の構文でインポートはできるのですが DoCmd.TransferText acImportDelim, "222 更新データ インポート定義", "更新データ【更新根拠】(当月)", Mypath & Fdn & "\222 更新データ【請求根拠】.csv", True, "" 手動でインポートする時指定する”主キーを自動的に設定する”はどのようにすれば適用されるのかがわかりません。 どなたか教えてください。よろしくお願いいたします。

  • Accessのインポートについて

    マイクロソフトアクセス2010でテーブルを作り、そこにCSVファイルを読みこませたいです。 テーブルのフィールドはテキスト型です。 例えば、Table_TESTというテーブルにF1というテキスト型のフィールドを設けます。 Access標準のTEXTインポート機能を使い、インポートを行おうとします。 CSVファイルのデータは、「12345678912345678ABCD」といったように数値とアルファベットです。 なぜか、このようなデータをインポートする時にデータ変換エラーと表示されて、正しくインポートできません。 これは、なぜこのような現象が起こるのでしょうか?

  • Access2003 データ型 オートナンバーについて エクセルからテ

    Access2003 データ型 オートナンバーについて エクセルからテーブルをインポートする方法 主キーである、IDと名をつけたフィールドのデータ型は"オートナンバー"でレコード新規入力際、自動で番号がふられていくようにしています。 このテーブルにエクセルのレコードをインポートして追加したいのですが、インポートできません。 ※オートナンバーフィールドが原因と思われます。 どうすれば、エクセルからこのテーブルにレコードをインポートし、追加されたレコードにオートナンバーで番号を割り振る事が出来ますででしょうか? 最も、シンプルな方法をお教え願います。

  • Access VBAでCSVファイルをインポートする方法

    こんにちは。 私は今AccessVBAである管理用データベースをつくろうと思っているのですが、 一番最初の作業であるインポートがどうしてもうまくいきません。 CSVファイルのインポートで、「TransferText」を使うところまではわかっているのですが、 引数の書き方がヘルプを見てもちょっとわかりにくくて・・・。 どなたかわかりやすくご教授願えないでしょうか。 ちなみに私なりにインポートのプログラムを書いたら「実行時エラー'2391' 貼り付け先の'kyk1'テーブルには'F1'フィールドがありません」と出ました。 これは一体どういう意味なんでしょうか?