質問をすることでしか得られない、回答やアドバイスがある。

15分調べてもわからないことは、質問しよう!

新規登録して質問してみよう
ただいま回答率
85.48%
SQL Anywhere

SQL Anywhereは、パッケージソフト組込みやハードウェア組込みなどのパッケージの名称。RDBMSやデータベースの同期ミドルウェアもパッケージになっています。また、メインのRDBMSサーバーを指すこともあります。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

Q&A

解決済

2回答

1639閲覧

excel VBA で Anywhere SQL接続

KN_YRSK

総合スコア1

SQL Anywhere

SQL Anywhereは、パッケージソフト組込みやハードウェア組込みなどのパッケージの名称。RDBMSやデータベースの同期ミドルウェアもパッケージになっています。また、メインのRDBMSサーバーを指すこともあります。

VBA

VBAはオブジェクト指向プログラミング言語のひとつで、マクロを作成によりExcelなどのOffice業務を自動化することができます。

0グッド

0クリップ

投稿2020/08/17 02:01

前提・実現したいこと

excel vba で anywhere sql に接続をしたいのですが、書き方がわかりません。
データソース、場所、ユーザー名、パスワードすべてわかっていますが、ソースコードがわかりません。
参考になるものを教えていただけないでしょうか

試したこと

A5:SQL Mk-2 Version 2.15.1で接続、SQL文にて、データ取得することはできました。
VBAでの実現を目指しております

補足情報(FW/ツールのバージョンなど)

excel 2016

気になる質問をクリップする

クリップした質問は、後からいつでもMYページで確認できます。

またクリップした質問に回答があった際、通知やメールを受け取ることができます。

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

sazi

2020/08/17 02:35 編集

「A5:SQL Mk-2」での接続は汎用接続ですか? また、その場合直接指定ですか?DSN経由ですか?
KN_YRSK

2020/08/17 02:20

返信ありがとうございます。 ごめんなさい。接続方法はどこを確認すればよろしいのでしょうか。 sql anywhere ole db provider 17 というのを選べるので、
退会済みユーザー

退会済みユーザー

2020/08/17 02:41 編集

OLEDBならこっちですかね https://www.google.co.jp/search?q=excel+vba+oledb 検索結果のページ一通り見て判らないなら、改めて質問してください Oracleとか別のDBが引っかかりますが、プロバイダー名を使用するものに合わせれば使えると思います
KN_YRSK

2020/08/17 04:02 編集

'TNSサービス名で接続する場合(tnsnames.ora) Private Const PROVIDER As String = "SQL Anywhere OLE DB Procider 17" 'Private Const DATA_SOURCE As String = "orcl" 'ネットサービス名 'TNSサービス名を使用せず直接接続する場合 Private Const HOST_NAME As String = "*********" 'データベースのホスト名orIPアドレス Private Const PORT_NO As String = "****" 'データベースのポート Private Const SERVICE_NAME As String = "******" 'サービス名 'データベースのアカウント情報 Private Const USER_ID As String = "DBA" 'データベースのユーザID Private Const PASSWORD As String = "***" 'データベースのパスワード Sub sample() On Error GoTo ERR_HANDLER Dim strSQL As String Dim i As Long '-------------------------------- ' データベース接続 '-------------------------------- Dim cn As New ADODB.Connection 'TNSサービス名で接続する場合 'cn.ConnectionString = "Provider=" & PROVIDER _ ' & ";Data Source=" & DATA_SOURCE _ ' & ";User ID=" & USER_ID _ ' & ";PASSWORD=" & PASSWORD ' cn.Open ' 'TNSサービス名を使用せず直接接続する場合 cn.ConnectionString = "Provider=" & PROVIDER _ '& ";Data Source=(DESCRIPTION=(ADDRESS=(PROTOCOL=TCP)" _ & "(HOST=" & HOST_NAME & ")" _ & "(PORT=" & PORT_NO & "))" _ & "(CONNECT_DATA=" _ & "(SERVICE_NAME=" & SERVICE_NAME & ")))" _ & ";User ID=" & USER_ID _ & ";PASSWORD=" & PASSWORD cn.Open このようなコード見つけたのですが、接続できません。 *のところはきちんと入れています。 これじゃだめなのでしょうか
退会済みユーザー

退会済みユーザー

2020/08/17 05:25 編集

ソースは、質問文を編集して上の試した事あたりにコードの挿入で記載してください。 プロバイダー名は、ツール等に表示されているものと実際にプログラムで指定するものは異なります。製品名+OLEDBで検索したり、製品のドキュメントやサンプルを見ると大体記載されていると思いますので、製品の公式ページや関連ドキュメントを調べてみると良いと思います。 (というか、基本的に使用する製品のドキュメントやサンプルをまず最初に隅々まで読むべきだと思いますが) ちなみに、上記のData Source指定はOracle固有の記述なので、他のDBだと異なります。
guest

回答2

0

返信頂いた方、ありがとうございます。
無事接続することができました。

cn.ConnectionString = "ココにA5:SQL Mk-2で使用した、接続文字列を直接記入”

で接続することができました。
ありがとうございました

投稿2020/08/17 05:34

編集2020/08/17 06:05
KN_YRSK

総合スコア1

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

0

ベストアンサー

ODBC接続の接続文字列が重要です。

SQL Anywhere JDBC ドライバ接続文字列
接続パラメータ(リンク先のリンクに一応あるみたいですが)が分からない場合は、DSN(ODBCデータソース)経由の方が良いでしょうね。

以下は「データソース(ODBC)」を利用し接続文字列を得る方法です。
5.1.3.2.1 ODBC接続文字列の作り方

VBAでの接続の具体的なコードは「VBA ODBC」あたりのキーワードで検索すればサンプルはたくさんあります。(※重要なのは、接続文字列です)
以下参考
データベースに接続する(OLE)

投稿2020/08/17 02:53

編集2020/08/17 05:02
sazi

総合スコア25195

バッドをするには、ログインかつ

こちらの条件を満たす必要があります。

あなたの回答

tips

太字

斜体

打ち消し線

見出し

引用テキストの挿入

コードの挿入

リンクの挿入

リストの挿入

番号リストの挿入

表の挿入

水平線の挿入

プレビュー

15分調べてもわからないことは
teratailで質問しよう!

ただいまの回答率
85.48%

質問をまとめることで
思考を整理して素早く解決

テンプレート機能で
簡単に質問をまとめる

質問する

関連した質問