- PR -

Visual Basic6ですが。。

投稿者投稿内容
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-08-08 19:54
.Netではなく単なるVB6ですがお教えください。

Set objRs = CreateObject("ADODB.Recordset")
objRs.Open sQuery, objConn, adOpenStatic, adLockReadOnly, adCmdText

sQuery = "select ISNULL(MAX(A),'0')+1 from student where s_id = '" & sId & "'"

を実行し、AのMax値を取得したいのですが、このSQL文を実行させると
「3265 要求された名前、または序数に対応する項目がコレクションで見つかりません。」
と表示されます。Max値を取得するにはどのようにすれば
よろしいでしょうか?
よろしくお願いいたします。
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-08-08 20:11
取得した結果にアクセスする際にobjRS.Fields.Item("ISNULL(MAX(A),'0')+1")
のような書き方をしてませんか?

もしそうならSQLを "select ISNULL(MAX(A),'0')+1 AS MAX_A from student"
として objRS.Fields.Item("MAX_A") のような形にするといけるかも.
_________________
# Future Is On Fire !
platini
大ベテラン
会議室デビュー日: 2002/12/03
投稿数: 193
投稿日時: 2005-08-08 21:29
1.そもそも、ISNULL関数は引数1個しか取れないのでは?
2.使用DBMSが明記されていませんが、例えばOracleではISNULL関数がありません。
  AccessならOKですが。(SQLServerはどうだったっけ?)
117
ベテラン
会議室デビュー日: 2005/05/09
投稿数: 94
お住まい・勤務地: 大阪府
投稿日時: 2005-08-09 09:13
確かにSQLServerかAccessと勝手に判断してました.すいません :cry:
引用:

platiniさんの書き込み (2005-08-08 21:29) より:
1.そもそも、ISNULL関数は引数1個しか取れないのでは?
2.使用DBMSが明記されていませんが、例えばOracleではISNULL関数がありません。
  AccessならOKですが。(SQLServerはどうだったっけ?)


SQLServerのIsNull関数は引数2個です(←言い訳)
http://www.microsoft.com/japan/msdn/library/default.asp?url=/japan/msdn/library/ja/tsqlref/ts_ia-iz_6mek.asp
_________________
Future Is What We Are!

[ メッセージ編集済み 編集者: 117 編集日時 2005-08-09 09:15 ]
小僧
大ベテラン
会議室デビュー日: 2005/06/24
投稿数: 122
投稿日時: 2005-08-09 09:57
おはようございます。

※ 外している回答ですが、気になったので。。。

>を実行し、AのMax値を取得したいのですが、このSQL文を実行させる
>「3265 要求された名前、または序数に対応する項目がコレクションで見つかりません。」
>と表示されます。
とありますが、エラーになるのは取得した結果にアクセスする際ですよね?
( いや、117様のご回答をコピペなのですが。。。 )

まず、どこでエラーが起こっているかを正確に把握する事が大切では?
と思いまして。

他の小難しいお話は他の賢者様にお任せします

<編集>
変な日本語を修正
</編集>

[ メッセージ編集済み 編集者: 小僧 編集日時 2005-08-09 09:58 ]
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-09 10:04
こんにちは、じゃんぬ です。

こういう SQL コマンド絡みのエラーは、
もっと単純な SQL などにしていろいろ試すと解決します。

 ・別テーブルだとどうなりますか?
 ・ISNULL をやめてしまうとどうですか?
 ・プログラム以外のエディタからはどうですか?

引用:

Set objRs = CreateObject("ADODB.Recordset")


関係ないですが、これ、何故に CreateObject...?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌
ポーター
ベテラン
会議室デビュー日: 2005/02/03
投稿数: 50
投稿日時: 2005-08-09 11:20
返答が遅くなり、申し訳ありません。

117さんにお教え頂いた
>SQLを "select ISNULL(MAX(A),'0')+1 AS MAX_A from student"
>として objRS.Fields.Item("MAX_A") のような形にするといけるかも.
で値を取得することができました。
ありがとうございます。

また、DBはSQLServerです。
Set objRs = CreateObject("ADODB.Recordset")
ですが、前任者がこのような書き方をしておりました。
おかしい書き方でしょうか?
じゃんぬねっと
ぬし
会議室デビュー日: 2004/12/22
投稿数: 7811
お住まい・勤務地: 愛知県名古屋市
投稿日時: 2005-08-09 11:23
引用:

ですが、前任者がこのような書き方をしておりました。
おかしい書き方でしょうか?


遅延バインディングにしている意図は?



_________________
C# と VB.NET の入門サイト
じゃんぬねっと日誌

スキルアップ/キャリアアップ(JOB@IT)