私はDelphi7とSQlserver 2008 R2を開発中です。 iは以下のようないくつかのデータを持つテーブルがある。\TADOQuery:パラメータとしてnullを渡して結果セットを取得
CREATE TABLE dbo.tstTable (
ID int IDENTITY(1,1) PRIMARY KEY,
Name varchar(255) NOT NULL,
Eid int null,
Pid int null
);
insert into tstTable(Name,Eid,Pid) values ('name1',1,null);
insert into tstTable(Name,Eid,Pid) values ('name2',2,null);
insert into tstTable(Name,Eid,Pid) values ('name3',3,null);
insert into tstTable(Name,Eid,Pid) values ('name4',null,4);
insert into tstTable(Name,Eid,Pid) values ('name5',null,5);
insert into tstTable(Name,Eid,Pid) values ('name4',null,6);
insert into tstTable(Name,Eid,Pid) values ('name7',null,null);
は今、私はイードは私が結果を得ることができています、SQL Serverの1に等しいレコードを取得したいです。
私はどんな結果を得ていないのですDelphiで同じことをしてみてください。デルファイで 、私はTADOConnection、TADOQuery、TDataSourceとTDBGridを取っている。
SET TADOQuery.Query = 'select Name from tstTable where Eid=:Eid and Pid =:Pid'
with ADOQuery1 do
begin
Parameters.ParamByName('Eid').Value := 1;
Parameters.ParamByName('pid').Value := NULL;//i tried with Unassigned also
Close;
open;
end; //with
グリッド内でAdoQueryを開くと、レコードが表示されません。コードの下の もレコードを返しません。
with ADOQuery1 do
begin
Parameters.ParamByName('Eid').Value := NULL;
Parameters.ParamByName('pid').Value := NULL;//i tried with Unassigned also
Close;
open;
end; //with
このシナリオをどのように扱うか?
「AND Pid IS NULL」を使用してください。 'NULL'は値ではありません。これは価値のない状態です。 – Victoria
@Victoria:私はそれを試みました。私はすべてのパラメータを渡したいときに失敗していますnullがあります。 tstTable(Name、Eid、Pid)の値( 'name7'、null、null)に挿入するようなレコードがあるときは、 – DelphiLearner
'where something = null'は動作しません。何かをnullと比較すると、 'IS'と' IS NOT'だけがtrueを返します。他の演算子は常にfalseを返します。あなたはSQLサーバで動作すると言いますが、そうはしません。あなたはそこで別のクエリを実行しています。ここでは(おそらく)条件全体が省略されています。 – GolezTrol