• 締切済み

エクセルVBAとsqlserverについて

ご教授ください エクセル2010を使用しています。 OSはWin7です。 エクセルVBAでユーザーフォームを作成し そこに入力した値からSQLを発行して データを取るようにしたいのですが どのようにすればいいのでしょうか。 select day from AAA where day = ******************** ※ *にユーザーフォームから入力した値を渡したいのです。    *はyyyymmdd形式で入力します。 以上、よろしくお願いします。

みんなの回答

noname#247307
noname#247307
回答No.2

SQLを使ってデータアクセスするのではなくて、SQL Serverに接続してデータを取得したいのですね。私はあんまり詳しくないんですが、どうもADODBオブジェクトを利用するようですね。こんな感じでやるようです。 Dim con As ADODB.Connection Dim rs As ADODB.Recordset Set con = New ADODB.Connection con.connectionString = "Provider=プロバイダ.1;Data Source=データソース;Initial Catalog=データベース; Trusted_Connection=yes;" con.Open Set rs = New ADODB.Recordset rs.ActiveConnection = con rs.Source = "SELECT * FROM テーブル" rs.Open Range(レンジ).CopyFromRecordset rs rs.Close con.Close 実際やってないので、ADODBについて調べてみてください。

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

SQL発行? データを取る?? んー。とりあえず。 ユーザーフォームに入力したものは何でしょうか。 Textboxに入力して、Commandbutton1とかを押して実行する・・・のなら Private Sub TextBox1_AfterUpdate()   If Not IsDate(TextBox1.Text) Then     MsgBox "「日付」と認識出来ません。", vbCritical     Textbox1=""   End If End Sub 日付のみ入力できるようにする方法です。 http://www.accessclub.jp/urawaza/10.html 上記リンクも参考にしてみてください。 Format(Date, "yyyy/mm/dd") 上記行はDate変数に入ったものをyyyy/mm/ddに変換してます。 上記を試しにMsgboxで出力すると 2014/06/27 と出ると思います。 もっと詳しい状況を教えて頂ければ、回答できるかと思います。

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

関連するQ&A

  • EXCELのVBAで重複を除いたカウント

    EXCELのVBAでSQLの SELECT COUNT(DISTINCT(ITEMS)) FROM TABLE WHERE SHOP = 'A' と同様のことを行いたいのですが、どのように考えたらよいでしょうか。 同じようなことができる関数でもよいです。

  • エクセルVBAでのSQLについて

    エクセルVBAで、SQLを記述しているのですがwhereの抽出条件にセルの値を指定したいと思っています。その当該セルの値を変更することで、抽出条件を変更することができるようにしたいです。 しかし、どのような記述にすればよいか分かりません。以下のような記述をしたのですが、うまくいきません。すみませんが、教えていただけないでしょうか。よろしくお願い申し上げます。 ◆抽出条件を指定するセル:A1 セルA1には、数字(例:1000、2000等)をいれます。 mySQL = " SELECT * FROM [◆◆シート!] WHERE Range("A1")"

  • 異なるテーブルのレコード削除

    オラクル初心者です。宜しくお願いします。 AAA、BBB、CCCというテーブルがあると仮定します。 画面から入力された値(ddd)をキーとして、CCCテーブルから該当するレコードをセレクト文で引っ張り、eeeという値を抜き出したとします。 そのeeeという値をキーにAAA、BBBテーブルのレコードを削除するにはどういうSQLを発行すればよろしいでしょうか? "delete from AAA, BBB where eee = (select eee from CCC where fff = ddd);" では駄目でした。 質問が下手でわかりにくいかもしれませんが、どうかご教授お願いします。

  • select されたレコードの操作

    以下のようなuser_idとuser_pwのtableがあります。 |id(ai)|user_id|user_pw|flg| |1|AAA|111|0| |2|BBB|222|0| select id from table where user_id = AAA をされると 1 を返し、 update table set flg = 1 where id = 1 かまたは update table set flg = 1 where user_id = AAA を発行したいと思っています。 ただ、sql 発行元から2個のsqlを出せない事情があり、DB側で対応しなければなりません。 トリガはselectでは使えませんよね?  最悪、query_logを監視しながらselectが来たら自分でupdateを発行するスクリプト しかないのかと考えています。 アドバイスお願いします。

  • エクセルVBAの質問です。

    エクセルVBAでユーザーフォーム上からセルを選択したいのですが、可能でしょうか? 当初はユーザフォーム上のボタンにRange("a1").selectを入れておき、ボタンをクリックするとA1セルが選択状態になり、キーボードで入力できると思ったのですが、駄目でしたorz とまぁユーザーフォーム上のボタンを押すとキーボードでセルに直接入力ができる状態にしたいです。 アドバイスの程よろしくお願いします!

  • エクセルVBAでシリアル値で読み込まれてしまう

    こんばんわ! エクセルVBAのユーザーフォームの質問です。 A1セルにある日付データ(yyyy/mm/dd形式)のデータをユーザーフォームのテキストボックスに入れるとシリアル値になってしまいます。 式は普通に aaa.text=range("a1") としています。 同様に時刻もなってしまうのですが、どうしたら通常のyyyy/mm/dd形式(時刻はhh:mm形式)で表示できるでしょうか? アドバイスの程よろしくお願いいたします。

  • Access2000でVBAからパラメータクエリを実行

    Access2000でフォームからの値を参照して実行するクエリを作りました。 SQLで表すと、以下のようなものです。 クエリ名:test SELECT TEST.HAKKODTE FROM TEST WHERE (((TEST.HAKKODTE)=Format([Forms]![F_メニュー]![txtNyukinDate],"yyyymmdd"))); このクエリをダブルクリックで実行すると問題なく実行できます。 これを、VBAからレコードを参照したいと思い、 以下のように記述しました。 Dim cn As ADODB.Connection Set cn = CurrentProject.Connection Dim rs1 As ADODB.Recordset Set rs1 = New ADODB.Recordset Dim sqlstr As String sqlstr = "SELECT * FROM test;" rs1.Open sqlstr, cn, adOpenKeyset, adLockOptimistic しかし、Open処理で、「1つ以上の必要なパラメータの値が設定されていません」 というエラーになってしまいます。 VBAを実行するときに、[Forms]![F_メニュー]![txtNyukinDate]に きちんと値は入力されています。 これを実行する方法はあるでしょうか?

  • EXCELのVBAについて

    エクセルのVBAでユーザーフォームに作ったテキストボックスに入力した値を、コマンドボタンによる「実行」とともに別に作った標準モジュールの変数として代入するにはどうすれば良いでしょうか? 具体的な流れは、 マクロ実行  ↓ ユーザーフォーム出現  ↓ テキストボックスに数字を代入→「実行」  ↓ 変数を代入された標準モジュールによる処理完了 というものです。 ご教授お待ちしております。

  • エクセルVBAで

    初めて質問させていただきます。エクセルVBAでスクロールバーを使ってデータを表示させることをしたいんですがなかなか理解できません。具体的にはあるフォームを作ってあって、スクロールを一つ動かすごとに過去にフォームに入力した値を順次表示させるというやり方なんですが、難しいでしょうか?

  • SQLServerで・・・

    SQLを発行してデータ取得したいと考えています。 テーブルの構成は 名前 varchar(512) アクセス日付 datetime(8) 住所 varchar(512) の3つの項目です。 ここで日にちごとにアクセスした人をカウントしたいと考えています。 アクセス日付には 2002-12-24 19:10:20:17.00 2002-12-25 15:11:01:21.00 2002-12-25 09:25:20:08.00 2002-12-26 21:10:20:17.00 というフォーマット(デフォルト?)で格納されています。 この場合、2002年12月25日にアクセスした人をカウントする SQLを書きたいのですが、どのようにすればいいのでしょうか? select 名前, アクセス日付, 住所 from テーブル where アクセス日付 = '???'; 実際にSQLを発行できる環境があればいいのですが、 宜しくお願いいたします。