2

私はDelphi7を使用していますが、という名前のテーブルがTable_1あり、2つのフィールドがあります。たとえば、IMageCode Varchar(50)画像ActImage [Blob in Oracle, VarBinary(Max) in SQL Server]とそれぞれの画像コードを含む4つのレコードが挿入されています。

Oracleで以下のようにSQLを作成すると、次のようになります。

Select * from Table_1 where Upper(ImageCode) ='SUNSET'

TADOQuery.RecordCountTADOQueryは、レコードが表示されていることを確認すると、レコードが返されません。0表示しようとすると、と表示TADOQuery.IsEmptyされますTrue。次に、同じクエリをOracleエディターで実行すると、期待どおりに1つのレコードが返されますが、delphiではTADOQueryはレコードを返しません。

しかし、Oracleデータベース用に次の単純なSQLを作成すると、TADOQueryを使用して4つのレコードすべてが返されます。

Select * from Table_1

上記でTADOQueryを使用して説明したように、SQLサーバーデータベースに問題は見つかりません。

ADOConnection.Connected := False; 
ADOConnection.LoginPrompt := False; 
ADOConnection.ConnectionString := <Connection String>; 
ADOConnection.Connected := True; 
ADOQuery1.Connection := ADOConnection; 
with ADOQuery1 do begin 
  Active := False; 
  SQL.Clear; 
  //SqL.Add('Select * from Table_1 where Upper(ImageCode) = ' +    QuotedStr(Uppercase(Trim(edtImageCode.Text)))); 
  SqL.Add('Select * from Table_1 where Upper(ImageCode) = ''SUNSET'''); 
  Active := True; 
end; 

誰かが問題になる可能性があることに焦点を当てることができますか?

4

1 に答える 1

0

問題は解決しました。「ImageCode」を主キーとして作成しようとしましたが、TADOQueryはperoperレコードカウント、つまり1を期待どおりに返します。以前は主キーはありませんでしたが、主キーがあるかどうかにかかわらず、TADOQueryは必要なデータセットを返す必要があります。

何か推測?

于 2012-10-26T08:08:23.537 に答える