Access (一般機能)

Accessの一般機能に関するフォーラムです。
  • 解決済みのトピックにはコメントできません。
このトピックは解決済みです。
質問

 
(Windows 10全般 : Access 2016)
SQLの書き方
投稿日時: 19/03/08 14:31:47
投稿者: chokobanana

SQLの書き方について下記事項がよくわからないため、教えて頂けないでしょうか?
 
@新規データベースは作成することは可能なのでしょうか?
 
ASQLコードのテーブルやカラム名、範囲等はExcelセルに入力した文字を
利用することはできるのでしょうか?
 
B新規テーブル作成するためのコードの書き方
 CREATE TABLE テーブル名?で大丈夫でしょうか?
 
CBで作ったテーブルにExcelシートデータをコピーする時のコードの書き方
 SELECT * INTO テーブル名 FROM Sheet1?で大丈夫でしょうか?
 
 
 
よろしくお願いいたします。

回答
投稿日時: 19/03/08 17:27:24
投稿者: sk

引用:
SQLの書き方

引用:
ASQLコードのテーブルやカラム名、範囲等はExcelセルに入力した文字を
利用することはできるのでしょうか?

それぞれのご質問にお答えする前に確認させていただきたいのですが、
今回も Excel ブックのマクロによって Access データベースを
参照/操作することを前提とされたご質問なのでしょうか。
 
過去のスレッド:
https://www.moug.net/faq/viewtopic.php?t=78003
https://www.moug.net/faq/viewtopic.php?t=78006

投稿日時: 19/03/08 21:06:45
投稿者: chokobanana

〉今回も Excel ブックのマクロによって Access データベースを 参照/操作することを前提とされたご質問なのでしょうか。
 
そうなのです。
お世話になっております。
 
ACCESSに接続してExcelのsheetデータを新規テーブルに貼りつけて操作したいのですが上手くいかずにご相談いたしました。
 
ご指導いただけないでしょうか。
お願いいたします。

回答
投稿日時: 19/03/09 06:35:26
投稿者: MMYS

下記を参照設定してください。
Microsoft ActiveX Data Objects x.x Library
Microsoft ADO Ext x.x
 
下記のコードをExcelVBAで実行してください。
サンプルには例外処理が入っていません。
実運用には例外処理を追加してください。
 
SQLは、VBAにとっては単なる文字列です。
Excelセルに入力した文字をもとに
SQL文字列を生成すれば可能です。
 
なお、今回のケースはExcel(VBA)板で質問すべきと思います。
 

Sub Test()
    Dim DB      As ADOX.Catalog
    Dim Conc    As ADODB.Connection
    Dim S       As String
            
    Const OLEDB = "Provider=Microsoft.ACE.OLEDB.12.0;Data Source="
    Const dbFile As String = "D:\新しいフォルダー\TEST.accdb"

    If Dir(dbFile) <> "" Then
        Kill dbFile
    End If

    'データーベース生成
    Set DB = New ADOX.Catalog
    DB.Create OLEDB & dbFile
    Set DB = Nothing

    'データベースに接続
    Set Conc = New ADODB.Connection
    Conc.ConnectionString = OLEDB & dbFile
    Conc.Open
    
    'テーブル生成
    S = "CREATE TABLE テーブル1   " & _
        "(  主キー1      INT ,    " & _
        "   フィールド1  CHAR(6) ," & _
        "   PRIMARY Key(主キー1)  " & _
        ");"
    Conc.Execute S

    'レコード追加
    S = "INSERT INTO テーブル1 (主キー1,フィールド1) VALUES (1,'AAA');"
    Conc.Execute S
    
    '接続終了
    Conc.Close:  Set Conc = Nothing

End Sub

 

投稿日時: 19/03/09 07:15:41
投稿者: chokobanana

〉今回のケースはExcel(VBA)板で質問すべきと思います。
 
申し訳ございません。
ACCESSを使うのでこちらだと勘違いしておりました。
次回より気をつけます。
 
 
所用の為、パソコンのない環境におります。
携帯にて、取り急ぎご連絡失礼いたします。
 
主キーの設定もできるのですね。
勉強になります。
 
もう少し教えていただけないでしょうか。
 
Excelを外部インポートする際、主キーを自動的に設定すると
IDが自動採番されますがSQLでも同じように行うことは可能でしょうか?
 
Excelの基データに採番しといた方がよろしいでしょうか?
 
 
ご指導いただけないでしょうか。
 
 
 
 
 
 
 
 

回答
投稿日時: 19/03/09 08:45:54
投稿者: hatena
投稿者のウェブサイトに移動

chokobanana さんの引用:
Excelを外部インポートする際、主キーを自動的に設定する
IDが自動採番されますがSQLでも同じように行うことは可能でしょうか?

 
オートナンバー型のフィールドですね。
下記が参考になるでしょう。
 
SQLでオートナンバー型の主キーフィールドを追加する方法 - hatena chips
https://hatenachips.blog.fc2.com/blog-entry-448.html

投稿日時: 19/03/11 12:48:59
投稿者: chokobanana

Testコードにて試してみましたが下記箇所でエラーが出ております。
どうしてなのでしょうか?
 
 
DB.Create OLEDB & dbFile
 
-2147467259
パス"D:\新しいフォルダー\TEST.accdb"は正しくありません。
パス名に間違いがないことと、ファイルが置かれたサーバーに接続していることを確認してください。

回答
投稿日時: 19/03/12 00:50:32
投稿者: MMYS

 
当然なからパスは環境に左右されます。
Dドライブが存在し
Dドライブに新しいフォルター というフォルダはありますか。
 
存在しないパスを指定すればとエラーになるのは当然です。
なお今回は、パスにはローカルドライブを指定してください。
 
また、パスはエクスプローラで対象フォルダをShiftキーを押しながら右クリック
「パスのコピー」でコピー&ペーストするのが確実です。
 
 

投稿日時: 19/03/13 12:55:33
投稿者: chokobanana

確認が遅くなり申し訳ございません。
教えて頂いたとおりに修正しましたらエラーが出なくなりました。
 
 
例外処理を書き込んで運用させていこうと思います。
 
 
>また、パスはエクスプローラで対象フォルダをShiftキーを押しながら右クリック
>「パスのコピー」でコピー&ペーストするのが確実です。
 
初めて知りました。
勉強になります。
 
 
皆様ご丁寧に色々と教えていただき ありがとうございます。
感謝申し上げます。