看看我写的代码,找找问题,谢谢帮忙procedure TForm1.Button1Click(Sender: TObject);var i: Integer=0; j: Integer=0;begin ListBox1.Clear; ADOTable1.Close; ADOTable1.TableName:=ComboBox1.Items[0]; ADOTable2.TableName:=ComboBox2.Items[0]; ADOTable1.Open; Try begin while i < ADOTable1.FieldByName(ComboBox1.text).Value.Count // 这里想获得记录的数目,估计不对,请指点 do begin while j < ADOTable2.FieldByName(ComboBox2.text).Value.Count // 同上 do begin if ADOTable1.FieldByName(ComboBox2.text).Value = ADOTable2.FieldByName(ComboBox1.text).Value // 这里不知如何和变量i和j联系起来 then ListBox1.Items.Add(ADOTable2.FieldByName.(ComboBox4.text).Value); j:=j+1 else j:=j+1; end; i:=i+1; end; end; except if ListBox1.ItemIndex =0 then ShowMessage('没有相同的记录'); end;end;
1.对于数据集的循环建议用while not ADOTable1.eof dobegin ... ADOTable1.Next;end;2.取得记录数的函数是ADOTable1.RecordCount,但不一定准确,有时候返回-1;3.数据表和字段,你好像没有区分清楚。4.ListBox1.ItemIndex表示当前选中的条目的顺序号,你需要的应该是ListBox1.Count。5.ADOTable2忘记调用ADOTable2.First;6.你的查找完全可以用sql来完成。 ListBox1.Clear; ADOquery1.close; ADOquery1.sql.text:='select b.字段名称 from 表a a inner join 表b b on a.关联字段=b.关联字段 '; ADOquery1.Open; while not ADOquery1.eof do begin ListBox1.Items.Add(ADOquery1.fields[0].Asstring ); ADOquery1.next; end; ADOquery1.Close;-----------------------------就50分,呵呵,给分!
这是我写的代码,求教procedure TForm1.Button5Click(Sender: TObject);var i: Integer=0; j: Integer=0;begin ListBox1.Clear; Try begin while i < ADOTable1.FieldByName(ComboBox1.text).Value.Count // 此处想获得ComboBox1.text中字段的数目作为计数,估计不对,求教 do begin while j < ADOTable2.FieldByName(ComboBox2.text).Value.Count // 同上 do begin if ADOTable1.FieldByName(ComboBox2.text).Value = ADOTable2.FieldByName(ComboBox1.text).Value // 此处不知道如何和变量i和j关联起来,求教 then ListBox1.Items.Add(ADOTable2.FieldByName(ComboBox2.text).Value); // 同上 j:=j+1 else j:=j+1; end; i:=i+1; end; end; except if ListBox1.ItemIndex =0 then ShowMessage('没有相同的记录'); end;end;