比如说,DBGrid中有,姓名,学号,年龄等字段,我在Edit中输入,姓名,那么在DBGrid中查找(不在数据库中找,而是和DBGrid中的姓名字段相比较来查找),找到此条记录,让这行处于当前行,选中状态,颜色发生改变??请问要怎么做,最好给点原代码!
6 个解决方案
#1
在DBGrid中查找,实质上就是在与之相连接的DataSet中查找,可用DataSet的Filter或者是用一个循环,比对DataSet的字段段值与Edit的值,看是否相符。
#2
如果通过用ADOTable和数据库连接的话,查询DBGrid的内容,可以用ADOTable的Filter做筛选,筛选条件是Edit中的内容。
#3
兄弟,这样:
DBGridEh3.DataSource.DataSet.First;
while not DBGridEh3.DataSource.DataSet.Eof do
begin
if DBGridEh3.DataSource.DataSet.Fields[1].AsString=Trim(RzEdit6.Text) then
begin
ShowMessage('表中已经有相同的记录');
RzButtonEdit2.SetFocus;
Exit;
end;
DBGridEh3.DataSource.DataSet.Next;
end;
你转为BCB就可以了,很简单的
DBGridEh3.DataSource.DataSet.First;
while not DBGridEh3.DataSource.DataSet.Eof do
begin
if DBGridEh3.DataSource.DataSet.Fields[1].AsString=Trim(RzEdit6.Text) then
begin
ShowMessage('表中已经有相同的记录');
RzButtonEdit2.SetFocus;
Exit;
end;
DBGridEh3.DataSource.DataSet.Next;
end;
你转为BCB就可以了,很简单的
#4
关键是颜色发生改变,而且处于当前行????
#5
这样弄弄看定位到一行;改变颜色
void __fastcall TForm1::btn1Click(TObject *Sender)
{
TLocateOptions Opts;
AnsiString s_use ;
s_use="select * from tablename ";
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add(s_lsuse);
DM->Query1->Open();
Opts.Clear();
Opts << loPartialKey;
DM->WaterQuery1->Locate("姓名", Edit1->Text, Opts);
}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
TLocateOptions Opts;
AnsiString s_use ;
s_use="select * from tablename ";
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add(s_lsuse);
DM->Query1->Open();
Opts.Clear();
Opts << loPartialKey;
DM->WaterQuery1->Locate("姓名", Edit1->Text, Opts);
}
#6
改变颜色
DBGrid1->Canvas->Brush->Color=clRed;
DBGrid1->Canvas->Brush->Color=clRed;
#1
在DBGrid中查找,实质上就是在与之相连接的DataSet中查找,可用DataSet的Filter或者是用一个循环,比对DataSet的字段段值与Edit的值,看是否相符。
#2
如果通过用ADOTable和数据库连接的话,查询DBGrid的内容,可以用ADOTable的Filter做筛选,筛选条件是Edit中的内容。
#3
兄弟,这样:
DBGridEh3.DataSource.DataSet.First;
while not DBGridEh3.DataSource.DataSet.Eof do
begin
if DBGridEh3.DataSource.DataSet.Fields[1].AsString=Trim(RzEdit6.Text) then
begin
ShowMessage('表中已经有相同的记录');
RzButtonEdit2.SetFocus;
Exit;
end;
DBGridEh3.DataSource.DataSet.Next;
end;
你转为BCB就可以了,很简单的
DBGridEh3.DataSource.DataSet.First;
while not DBGridEh3.DataSource.DataSet.Eof do
begin
if DBGridEh3.DataSource.DataSet.Fields[1].AsString=Trim(RzEdit6.Text) then
begin
ShowMessage('表中已经有相同的记录');
RzButtonEdit2.SetFocus;
Exit;
end;
DBGridEh3.DataSource.DataSet.Next;
end;
你转为BCB就可以了,很简单的
#4
关键是颜色发生改变,而且处于当前行????
#5
这样弄弄看定位到一行;改变颜色
void __fastcall TForm1::btn1Click(TObject *Sender)
{
TLocateOptions Opts;
AnsiString s_use ;
s_use="select * from tablename ";
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add(s_lsuse);
DM->Query1->Open();
Opts.Clear();
Opts << loPartialKey;
DM->WaterQuery1->Locate("姓名", Edit1->Text, Opts);
}
void __fastcall TForm1::btn1Click(TObject *Sender)
{
TLocateOptions Opts;
AnsiString s_use ;
s_use="select * from tablename ";
DM->Query1->Close();
DM->Query1->SQL->Clear();
DM->Query1->SQL->Add(s_lsuse);
DM->Query1->Open();
Opts.Clear();
Opts << loPartialKey;
DM->WaterQuery1->Locate("姓名", Edit1->Text, Opts);
}
#6
改变颜色
DBGrid1->Canvas->Brush->Color=clRed;
DBGrid1->Canvas->Brush->Color=clRed;