• 締切済み

フィールドの欠落

初めて質問いたします。 テーブルを結合させ「rs.Fields.Count」で フィールド数をカウントすると 実際のフィールド(項目)数よりも一つ減っています。 ※結合しない場合は想定通りのフィールド数になります。 どうも先頭のフィールドが欠落してしまっているようです。 お分かりの方ご教授願います。 以下コード一部 **************************************************************** sql="SELECT * FROM SHORI_TBL A JOIN MST_BATCHGROUP B ON A.BATCHGRP_ID = B.BATCHGRP_ID "_   & "JOIN BATCHGROUP_TBL C ON B.BATCHGRP_ID = C.BATCHGRP_ID "_   & "JOIN MST_BATCH D ON C.BATCH_ID = D.BATCH_ID "_   & "WHERE A.SHORI_ID = '" & Request.Form("shoriId") &"' "_   & "ORDER BY A.BATCHGRP_EXEC_NO,C.BATCH_EXEC_NO "   Set cshoriRs = Server.CreateObject("ADODB.RecordSet")   Rs.Open sql,conn,1,1 **************************************************************** 環境 ----------------------------- Windows2000 server iis5.0 Oracle9i Release 9.2.0.6.0 ------------------------------

みんなの回答

回答No.2

お世話になります。 ADO で SQL Server2K なテーブルで 内部結合した表達から値をとってきてみましたが、 ちゃんと RecordSet.Fields.Count は一致しますねぇ。 SELECT Customers.CustomerID, CompanyName, ContactName, ContactTitle, Address, Orders.OrderID, Orders.OrderDate FROM Customers INNER JOIN Orders ON Customers.CustomerID = Orders.CustomerID 7 SELECT * でなくて一個ずつ項目指定してみてはいかがでしょう?

king1304
質問者

お礼

早速のお返事ありがとうございます。 一個ずつ項目指定してやってみましたが それでも結果は同じでした。。。 さらに以下を行っても欠落します。 SELECT 1 AS ONE, 2 AS TWO FROM DUAL Countは「1」になります。。。

king1304
質問者

補足

スイマセン、補足です。 DUALは別のテーブルをJOINしております。

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

お世話になります。 Oracle へ oo4o ではなくて ADO で接続されているのですよね。 ワタシの環境は king1304 さんと全然かぶらないのですが ADO の操作の基本は同じはずです。 以下の ASP を実行すると、 ============================================================== <% ' Connection Dim objCon Set objCon = Server.CreateObject("ADODB.Connection") ' ConnectionString objCon.ConnectionString = "Provider=SQLOLEDB;" & _ "User ID=test;" & _ "Password=test;" & _ "Data Source=(local);" & _ "Initial Catalog=Northwind" ' SQL Dim strSQL strSQL = "SELECT " strSQL = strSQL & " CustomerID, CompanyName, ContactName, ContactTitle, Address " strSQL = strSQL & " FROM " strSQL = strSQL & " Customers " ' Recordset Dim objRS Set objRS = Server.CreateObject("ADODB.Recordset") ' Open objCon.Open objRS.Open strSQL, objCon, 3 Response.Write( strSQL ) Response.Write( "<br>" ) Response.Write( objRS.Fields.Count ) objRS.Close objCon.Close %> ============================================================== 結果は以下のように、SQL と一致した項目数が返却されます。 ============================================================== SELECT CustomerID, CompanyName, ContactName, ContactTitle, Address FROM Customers 5 ============================================================== ちなみに環境は XP Pro SP2 IIS 6.0 SQL Server 2000 SP4

king1304
質問者

お礼

naganaga_001さん丁寧な御回答ありがとうございます。 >Oracle へ oo4o ではなくて ADO で接続されているのですよね。 ADOです。説明不足でスイマセン。 naganaga_001さんのようにテーブルを結合せずに SELECTした場合は私もSQLと一致した項目数が返却されたのですが 質問時に書いたコードの様にテーブルを結合(JOIN)すると 項目数が何故か一つ減ってしまうんです。

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

関連するQ&A