HTML上のドロップダウンリストにmdbのテーブルのフィールドを表示するには

解決


リンカーン  2003-02-04 09:33:42  No: 77019  IP: [192.*.*.*]

HTMLで作成したフォーム上のドロップダウンリストにACCESS97のmdbのテーブルのあるフィールドを表示できるようにしたいのですが、VBscriptでコードを記述するのも初めてで、またmdbへの接続もADOを使っていますので、あまり良くわかりません。できましたら、コードの記述など具体的に教えていただけたら助かります。よろしくお願い致します。

編集 削除
とろ  2003-02-04 10:11:05  No: 77020  IP: [192.*.*.*]

こんな感じかな。
次の HTML をファイルに保存して、開いてみて下さい。
(データベース名を変更してからね。)
コンボボックスにテーブルの一覧が表示されます。

<!-- ここから -->
<?xml version="1.0" encoding="Shift_JIS"?>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis" />
<script language="VBScript"><!--
Option Explicit
Private Sub SetTableList()
On Error Resume Next
  Const adSchemaTables = 20
  Dim adoCn 'As ADODB.Connection
  Dim adoRs 'As ADODB.Recordset
  Dim opt 'As Object
  Set adoCn = CreateObject("ADODB.Connection")
  '* Data Source に mdb ファイルパスを指定して下さい。
  adoCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;"
  Set adoRs = adoCn.OpenSchema(adSchemaTables)
  Do While adoRs.EOF = False
    Set opt = Document.CreateElement("option")
    opt.Text = adoRs.Fields("TABLE_NAME").Value
    opt.Value = ""
    Form1.cmbTableName.Options.Add opt
    Set opt = Nothing
    adoRs.MoveNext
  Loop
  adoRs.Close: Set adoRs = Nothing
  adoCn.Close: Set adoCn = Nothing
End Sub
-->
</script>
</head>
<body onLoad="SetTableList">
<form name="Form1">
  <select name="cmbTableName" style="width:100pt;font-family:MS ゴシック" />
</form>
</body></html>
<!-- ここまで -->

編集 削除
とろ  2003-02-04 10:13:22  No: 77021  IP: [192.*.*.*]

ちょっと、勘違い (^^;

テーブル名じゃなくて、フィールド名でしたね。
まっ、同じような感じでできると思うので、
挑戦してみて下さい。

編集 削除
とろ  2003-02-04 10:15:52  No: 77022  IP: [192.*.*.*]

またまた、勘違いかな?

フィールド一覧じゃなくて、あるフィールドの値ですかね。
OpenSchema メソッドではなく
Execute メソッドで抽出クエリを実行して下さい。

おっちょこちょいで、申し分けありません。 <(_^_)>

編集 削除
リンカーン  2003-02-04 11:36:57  No: 77023  IP: [192.*.*.*]

ここまで書いていただいて大変恐縮ですが、具体的にテーブル名とフィールド名をご指示しますので、そのセット方法を教えてください。どうか初心者なものでよろしくお願い致します。
テーブル名:CAT
フィールド名:mode

編集 削除
とろ  2003-02-04 12:50:08  No: 77024  IP: [192.*.*.*]

# 少しは自分で考えましょう。

<!-- ここから -->
<?xml version="1.0" encoding="Shift_JIS"?>
<html><head>
<meta http-equiv="Content-Type" content="text/html;charset=x-sjis" />
<script language="VBScript"><!--
Option Explicit
Private Sub SetTableList()
On Error Resume Next
  Const adOpenStatic = 3
  Dim adoCn 'As ADODB.Connection
  Dim adoRs 'As ADODB.Recordset
  Dim opt   'As Object
  Set adoCn = CreateObject("ADODB.Connection")
  adoCn.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\db1.mdb;"
  Set adoRs = CreateObject("ADODB.Recordset")
  adoRs.open "select mode from CAT", adoCn, adOpenStatic
  Do While adoRs.EOF = False
    Set opt = Document.CreateElement("option")
    opt.Text = adoRs.Fields(0).Value
    opt.Value = ""
    Form1.Combo1.Options.Add opt
    Set opt = Nothing
    adoRs.MoveNext
    If err.Number <> 0 Then Exit Do
  Loop
  adoRs.Close: Set adoRs = Nothing
  adoCn.Close: Set adoCn = Nothing
End Sub
-->
</script>
</head>
<body onLoad="SetTableList">
<form name="Form1">
  <select name="Combo1" style="width:100pt;font-family:MS ゴシック" />
</form>
</body></html>
<!-- ここまで -->

編集 削除
リンカーン  2003-02-04 16:11:48  No: 77025  IP: [192.*.*.*]

とろさんありがとうございました。大変感謝しています。しかしまたハマッテしまいました。先ほど指定したテーブルを下記のようにグループ化して実行してみたのですが、コンボボックスには何も表示されません。mdb側にも、グループ化したクエリを作ってそれを参照するようにしてみたりしたのですが、うまくいきませんでした。下記の記述に誤りがあるのでしょうか?それとも、根本的に記述の方法が違うのでしょうか?たびたびすみませんが、教えてください。よろしくお願い致します。
dim strSQL
strSQL="SELECT * FROM CAT GROUP BY mode"
adoRs.open strSQL, adoCn, adOpenStatic
追加及び変更した箇所は上記の3行です。

編集 削除
とろ  2003-02-04 17:40:41  No: 77026  IP: [192.*.*.*]

SQL について勉強しましょう。

group by 句を使用した場合、
group by で指定したフィールド、あるいは
集計関数 max, sum, first を使用したもの以外、
select 句内に指定することはできません。

つまり
select mode from CAT group by mode

編集 削除
リンカーン  2003-02-04 18:00:19  No: 77027  IP: [192.*.*.*]

とろさん、できました!(次元が低くてすみませんでした。)ありがとうございました。(また、何かありましたらどうかよろしくお願い致します。)

編集 削除