- 未記入
- 会議室デビュー日: 2005/10/22
- 投稿数: 6
|
投稿日時: 2005-10-26 20:44
下記の最終行でエラーになってしまうのは何故でしょうか?
どのように解決すればいいのでしょうか?
エラー内容:ORA-00904: "DISTINCTPAGE_ID": 無効な識別子です。
<ソース>
Dim oADOCon As ADODB.Connection
Dim oRet1 As ADODB.Recordset
Set oADOCon = CreateObject("ADODB.Connection")
Call oADOCon.Open(cnConnection)
SQL1 = "select count(distinct page_id) from documentation"
Set oRet1 = CreateObject("ADODB.Recordset")
Call oRet1.Open(SQL1, oADOCon, adOpenForwardOnly, adLockReadOnly,adCmdText)
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-27 09:19
こんにちは、らい さん。
マルチポスト先が板違いのフォーラムであるため、こちらで返信させて頂きます。
| 引用: |
|
マルチポスト先 のらいさんの書き込み (2005-10-26 21:00) より:
えと、エラーから言って、SQL文に問題があると思います。
というか、「count(distinct page_id)」はまずいんではなかろうか、と。
「distinct」って、重複する行を取り除く命令だと思ったので、
| コード: |
|
SQL1 = "select count(*) from (select count(page_id) from" & _
" documentation group by page_id)"
|
というところではないでしょうか。
|
distinct がある場合でも、正しく動作することを確認しました。
意図したように、重複したデータを除いた件数を返してくれるようです。
| コード: |
|
Private Sub OneMethod()
' 接続文字列を生成する
Dim nConnectionString As String
nConnectionString = nConnectionString & "Driver={SQL Server};"
nConnectionString = nConnectionString & "Server=Server;"
nConnectionString = nConnectionString & "Database=Northwind;"
' ADODB.Connection の新しいインスタンスを生成する
Dim oConnection As ADODB.Connection
Set oConnection = New ADODB.Connection
' ADODB.Connection の接続を確立する
Call oConnection.Open(nConnectionString)
' 実行時エラー発生時でも Connection の Close を保証する
On Error GoTo Finally1
' ADODB.Recordset の新しいインスタンスを生成する
Dim oRecordset As ADODB.Recordset
Set oRecordset = New ADODB.Recordset
' SQL コマンド テキストの生成
Dim nSqlCommand As String
nSqlCommand = "SELECT COUNT(DISTINCT EmployeeID) FROM Employees"
' 指定されたコマンド テキストで Recordset を開く
Call oRecordset.Open(nSqlCommand, oConnection, adOpenForwardOnly, adLockReadOnly, adCmdText)
' 実行時エラー発生時でも Recordset と Connection の Close を保証する
On Error GoTo Finally2
' ここはテスト専用
If oRecordset.EOF = False Then
Call MsgBox(oRecordset.Fields(0).Value)
End If
Finally2:
' Recordset を Close する
If Not oRecordset Is Nothing Then
If oRecordset.State <> ObjectStateEnum.adStateClosed Then
oRecordset.Close
End If
Set oRecordset = Nothing
End If
Finally1:
' Connection を Close する
If Not oConnection Is Nothing Then
If oConnection.State <> ObjectStateEnum.adStateClosed Then
oConnection.Close
End If
Set oConnection = Nothing
End If
End Sub
|
# 文字列で生成されるオブジェクトを指定するのって、
# コンパイル解決できていないため、私はあまり好きではありません。
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- らい
- 大ベテラン
- 会議室デビュー日: 2005/08/02
- 投稿数: 159
- お住まい・勤務地: 東京都と千葉県のさかいめ
|
投稿日時: 2005-10-27 10:33
らいです。
| 引用: |
|
じゃんぬねっとさんの書き込み (2005-10-27 09:19) より:
こんにちは、らい さん。
マルチポスト先が板違いのフォーラムであるため、こちらで返信させて頂きます。
| 引用: |
|
マルチポスト先 のらいさんの書き込み (2005-10-26 21:00) より:
えと、エラーから言って、SQL文に問題があると思います。
というか、「count(distinct page_id)」はまずいんではなかろうか、と。
「distinct」って、重複する行を取り除く命令だと思ったので、
| コード: |
|
SQL1 = "select count(*) from (select count(page_id) from" & _
" documentation group by page_id)"
|
というところではないでしょうか。
|
|
どもです。
いや、フォーラムを確認してませんでした。(^^;
えと、
| 引用: |
|
エラー内容:ORA-00904: "DISTINCTPAGE_ID": 無効な識別子です。
|
とあったので、まずOracleでのエラーかと。
で、SQL式が
| コード: |
|
SQL1 = "select count(distinct page_id) from documentation"
|
だったんで、distinctとpage_idの間の半角スペースが
認識されていないのではなかろうか、と。
それなんで、マルチポスト先のSQL式を書いた次第です。
Oracleって、DISTINCTを認識しないとかそういうのありましたっけ?
# ンなわけないとは思いますが、念のため。
うちには、Oracleがないので確認できませんでした。
_________________ 一寸先は闇
安定してるシステムって言ったじゃん(泣)
|
- じゃんぬねっと
- ぬし
- 会議室デビュー日: 2004/12/22
- 投稿数: 7811
- お住まい・勤務地: 愛知県名古屋市
|
投稿日時: 2005-10-27 10:48
| 引用: |
|
らいさんの書き込み (2005-10-27 10:33) より:
いや、フォーラムを確認してませんでした。(^^;
|
とはいえ、こちらの会議室でも少々微妙な質問ではあります。
Insider.NET の方が判例的に妥当なのかもしれません。
| 引用: |
|
とあったので、まずOracleでのエラーかと。
で、SQL式が
| コード: |
|
SQL1 = "select count(distinct page_id) from documentation"
|
だったんで、distinctとpage_idの間の半角スペースが
認識されていないのではなかろうか、と。
それなんで、マルチポスト先のSQL式を書いた次第です。
Oracleって、DISTINCTを認識しないとかそういうのありましたっけ?
# ンなわけないとは思いますが、念のため。
うちには、Oracleがないので確認できませんでした。
|
Oracle 8i で確認しましたが、正常に動作しました。
ちなみに Microsoft SQL Server でも確認しています。(^-^*)
# まあ、エラーメッセージ が 「ORA-...」なので Oracle なのは判りますが、
# 詳しい製品バージョンが、提示されていないような気がします...
_________________ C# と VB.NET の入門サイト
じゃんぬねっと日誌
|
- らい
- 大ベテラン
- 会議室デビュー日: 2005/08/02
- 投稿数: 159
- お住まい・勤務地: 東京都と千葉県のさかいめ
|
投稿日時: 2005-10-27 11:01
| 引用: |
|
じゃんぬねっとさんの書き込み (2005-10-27 10:48) より:
とはいえ、こちらの会議室でも少々微妙な質問ではあります。
Insider.NET の方が判例的に妥当なのかもしれません。
|
あ、確かに。(^^;
ソース的に見て、VBですもんね。
| 引用: |
|
Oracle 8i で確認しましたが、正常に動作しました。
ちなみに Microsoft SQL Server でも確認しています。(^-^*)
|
そうすると、実際に動いているものと、
未記入さんが示されたソースには違いがある、ということですな。
でなければ、「"DISTINCTPAGE_ID": 無効な識別子です。」とはならないでしょうし。
# 半角スペース入れ忘れって言ってます。(^^
_________________ 一寸先は闇
安定してるシステムって言ったじゃん(泣)
|