'SQLの指定
prStrSql = "SELECT * FROM SYOUHIN ORDER BY N_SYOUHIN_CD ASC"
'商品マスタレコードセットオブジェクトへ接続する
prRsSyouhin.Open prStrSql, prCn, adOpenStatic, adLockOptimistic
'商品CDテキストにデータソースを指定
Set txtSyouhinCd.DataSource = prRsSyouhin
'商品CDテキストへ表示
txtSyouhinCd.DataField = "N_SYOUHIN_CD"
上記のコードだと 商品CDテキストに ちゃんと表示されるのですが
'SQLの指定
prStrSql = "SELECT MAX(N_SYOUHIN_CD) FROM SYOUHIN"
'商品マスタレコードセットオブジェクトへ接続する
prRsSyouhin.Open prStrSql, prCn, adOpenStatic, adLockOptimistic
'商品CDテキストにデータソースを指定
Set txtSyouhinCd.DataSource = prRsSyouhin
'商品CDテキストへ表示
txtSyouhinCd.DataField = "N_SYOUHIN_CD" ・・・※
こうすると ※のところで 「フィールドまたはデータメンバに接続できません」
というエラーが出ます。
なぜでしょうか?
抽出しているフィールド MAX(N_SYOUHIN_CD)に対し
N_SYOUHIN_CD を抽出しようとしているからです。
prStrSql = "SELECT MAX(N_SYOUHIN_CD) FROM SYOUHIN"
このSQLで表示させる場合は どうすればいいでしょうか?
今回の場合、
>フィールドまたはデータメンバに接続できません
→指定されたフィールド"N_SYOUHIN_CD"が見つかりません。
なので、どんなフィールド名で結果が返ってきてるか?の
確認くらいはして欲しいですが…。
>どうすればいいでしょうか?
AS 句でフィールド名を設定して下さい。
SQLをSQL*Plus等で実行したとき、
SELECT MAX(N_SYOUHIN_CD) FROM SYOUHIN
では
MAX(N_SYOUHIN_CD)がフィールド名になるはずです。それが嫌なら名前をかえてやる単純に、フィールド名をリネームすれば言いかと思います
prStrSql = "SELECT MAX(N_SYOUHIN_CD) AS N_SYOUHIN_CD FROM SYOUHIN"
'SQLの指定
prStrSql = "SELECT MAX(N_SYOUHIN_CD) AS N_SYOUHIN_CD FROM SYOUHIN"
これでうまくいきました。
ありがとうございました。
解決チェックし忘れました
ツイート | ![]() |