• 締切済み

ACCESS2000 VBAを使用して最適化したい

ACCESS2000を使用しています。 VBAでデータベースの最適化/修復を行いたいと思っています。 連番をリセットしたいのですが、可能でしょうか? ツールからオプションでチェック入れることはわかりますが・・・ たとえば、データを入力しクエリで他テーブルに追加し 新規でまたこのテーブルにデータを入力していく作業があります。 クエリで他テーブルに追加した時点で、テーブルのデータを作成し、最適化して全くの新しいデータを1番からの連番で入力したいです。 出来ますか?

みんなの回答

noname#22222
noname#22222
回答No.3

スーツのデザイナでプログラマではありません。 よって、詳しいコードは判りませんが... 美しく連番で管理したいという願いは判りますが、それはかなり至難と思います。 [発注ID]ということはプライマリキー臭いですね。 Access も腐ってもリレーショナルデータベースです。 ゼロリレーションですと、正に、カード型データベースです。 [発注ID]は、全く、その固有の値で参照されてないのでしょうか? それとも、連鎖更新を期待しての操作でしょうか? この辺りが心配です。

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.2

#1です。 モジュールですので実行したいときにCallすることになります。 発注テーブルを一旦作成しそれをマスタテーブルに保存していく と考えてよろしいでしょうか。 上記の場合でしたら発注テーブルを作成する前に初期化を実行 するのがよいと思います。 だたmResetにはエラーロジックが含まれていません。 実務で使用するのなら考慮する必要があります。 ----- Sub m発注テーブル作成() Call mReset("発注", "発注ID", 1) '発注テーブル作成処理 End Sub

  • o_chi_chi
  • ベストアンサー率45% (131/287)
回答No.1

>連番をリセットしたいのですが、 というのはオートナンバー型フィールドを初期化する ということでしょうか。 でしたら下記の方法で可能です。 まず参照設定で Microsoft ADO Ext. 2.x for DDL and Security を組み込んで下さい。 ----- '引数:テーブル名,フィールド名,初期値 Sub mReset(strTableName As String, _ strColumn As String, _ lngSeed As Long) Dim con As ADODB.Connection Dim cat As New ADOX.Catalog Dim col As ADOX.Column Set con = CurrentProject.Connection cat.ActiveConnection = con Set col = cat.Tables(strTableName).Columns(strColumn) col.Properties("Seed") = lngSeed cat.Tables(strTableName).Columns.Refresh MsgBox col.Properties("Seed") Set col = Nothing Set cat = Nothing Set con = Nothing End Sub

a32
質問者

補足

早速の回答ありがとうございます。初心者なので初歩的質問で申し訳ありません。ファイル名が、在庫管理、テーブルが、発注、フィールドが発注IDで入力のたび1から番号を振りたいのですが・・・ 引数:テーブル名,フィールド名,初期値 の記述がわかりません。 また、どの時点で実行されるのでしょうか?ボタン等つくるのですか? 本当に申し訳ないのでがよろしくお願いします

関連するQ&A