質問: "select firstname from employees" cn.open() msgbox(sql.executescalar) cn.close() sql.dispose() cn.dispose() end sub としました。結構単純な流れだと思うのですがcn.open()の部分で「sqlexpressionはハンドルされませんでした」とエラーが出ます。 sql network interfaces, error: 26 だそうです。資格情報の有無もなにもデータベースエクスプローラで内部の閲覧は出来るし、パスワードフリーなのでどのセッションが不可なのか見当がつきません。アドバイスよろしくお願い致します。
回答: 方法は変更するので心苦しいのですが、adoを使用して接続したほうが良いように思います。 dim strdbconect as string 'db接続文字列 dim adoconnect as new adodb.connection 'ado接続 dim adocommand as new adodb.command 'adoストアド実行用 dim adorecordset as new adodb.recordset 'adoレコードセット実行用 dim strsql as string 'クエリ文挿入用 strdbconect = "" strdbconect = strdbconect & "provider=sqloledb;" strdbconect = strdbconect & "data source=データベースサーバ名;" strdbconect = strdbconect & "initial catalog=northwind;" strdbconect = strdbconect & "persist security info=true;" strdbconect = strdbconect & "user id=sql server ログインユーザid;" strdbconect = strdbconect & "password=sql server ログインパスワード;" 'データベースに接続 adoconnect.connectionstring = strdbconect adoconnect.open() 'コマンドを実行する接続先を指定 adocommand.activeconnection = adoconnect 'sql文を作成する strsql = "" strsql = strsql & "select firstname from employees;" 'パラメータを?マークで指定する adocommand.commandtext = strsql adorecordset = adocommand.execute do until adorecordset.eof msgbox(adorecordset("firstname").value) adorecordset.movenext() loop adorecordset.close() adoconnect.close() adorecordset = nothing adocommand = nothing adoconnect = nothing ちなみに上記の方法でプログラミングを行う場合、 参照定義に「microsoft activex data objects 2.x library」を追加する必要があります。 ※ 内容を見やすくするため、ソースの前には全角スペースを入れています。 複写される場合は半角スペースに置換してください。