我有一個DBGrid,我想在點擊時,點擊的記錄到另一個DBGrid上顯示(只顯示這條)? ( 积分: 50 )

  • 主题发起人 主题发起人 漂流的雲
  • 开始时间 开始时间

漂流的雲

Unregistered / Unconfirmed
GUEST, unregistred user!
具體是這樣的。。我有一個表,裡面包括單別,訂單單號,訂單日期。品號。。。。。。。等等。如果我想用第二個dbgrid用來查詢單別,訂單單號,訂單日期這個三字段,當我雙擊這三個字段的這條記錄時,就由第一個dbgrid顯示裡面詳細內容。我采用主從表來實現。procedure TForm1.DBGrid2DblClick(Sender: TObject);
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from 訂單明細表 WHERE 單別=訂單明細表.單別 and 訂單單號=訂單單號 and 訂單日期=訂單日期');
open;
end;
end;
根據三個條件來確定這條記錄。但是總是不能得到任何數據(如果只用其中的一個條件就行。但是得到的記錄會有多條),不知道有沒有好的方法。
求各位大俠出手幫忙。
 
具體是這樣的。。我有一個表,裡面包括單別,訂單單號,訂單日期。品號。。。。。。。等等。如果我想用第二個dbgrid用來查詢單別,訂單單號,訂單日期這個三字段,當我雙擊這三個字段的這條記錄時,就由第一個dbgrid顯示裡面詳細內容。我采用主從表來實現。procedure TForm1.DBGrid2DblClick(Sender: TObject);
begin
with adoquery1 do
begin
close;
sql.Clear;
sql.Add('select * from 訂單明細表 WHERE 單別=訂單明細表.單別 and 訂單單號=訂單單號 and 訂單日期=訂單日期');
open;
end;
end;
根據三個條件來確定這條記錄。但是總是不能得到任何數據(如果只用其中的一個條件就行。但是得到的記錄會有多條),不知道有沒有好的方法。
求各位大俠出手幫忙。
 
要有个参数才行啊.
比较基础的内容,打本书看一下就有了.
 
參數我設有三個,分別是單別,訂單單號,訂單日期。如果只用其中的一個的話,會有很多記錄出現,現在就是想用三個條件同時滿足的情況來得到這條記錄。
 
你是想在一个dbgrid里显示查询纪录 然后双击某一条 另一个dbgrid出现该条的详细纪录
还是什么?
 
你可以这样实现你的需求,把DSA连到源DBGridA,DSB连到目的DBGridB,接下来这样做:
DSB.DataSet.FieldbyName('字段名').values := DBGridA.SelectedRows.FieldByName('字段名').Values;基本思路就是这样,你可以试一下。
 
procedure TForm1.DBGrid1DblClick(Sender: TObject);
begin
form3.show;
with form3.ADOQuery1 do
begin
close;
sql.Clear;
sql.Add('select * from 表a where X ="'+dbgrid1.SelectedField.Value+'"');
//AND B ='+dbgrid1.SelectedField.Value+' ');
//sql.Add('and '+Parameters.ParamByName('X').Value+'='+dbgrid1.SelectedField.Value+'');
//and A='+dbgrid1.SelectedField.Value+' and B='+dbgrid1.SelectedField.Value+'');
open;
end;
不行啊。。。這樣通不過
 
procedure TForm_cx.DBGridEh1DblClick(Sender: TObject);
var aa:string;
begin
aa:=dbgrideh1.DataSource.DataSet.fieldbyname('id').AsString;
//if form_zj.Edit1.Text=edit1.Text then
form_zj:=Tform_zj.Create(application);
form_zj.Show;
form_cx.Close;
with form_zj.adoquery1 do
begin
close;
sql.clear;
sql.text:='select * from zichan where id='+quotedstr(aa);
open;;
end;

end;
我这个是查询出结果 然后双击 再另一窗口出现该纪录的详细信息 根据ID来判断
 
一個條件沒問題。三個就會出錯。。。
 
下面是我常用的函數,你要修改才能實現你的功能。
{=================================================================
功 能: 對自己復制一條記錄加入數據集中
參 數: Dataset:數據集
返回值: 無
=================================================================}
Procedure AppendCurrentReCordset(Dataset:Tdataset);
Var
aField : Variant ;
i : Integer ;
Begin
// 創建數組
aField := VarArrayCreate([0,DataSet.Fieldcount-1],VarVariant);
// 數據集到數組
For i := 0 to (DataSet.Fieldcount-1) Do Begin
aField := DataSet.fields.Value ;
End;
DataSet.Append ;
// 數組到數據集
For i := 0 to (DataSet.Fieldcount-1) Do Begin
DataSet.fields.Value := aField ;
End;
End;
 
一个条件没问题 3个就会出错是什么意思?
 
后退
顶部