Delphi ADOQuery连接数据库的查询、插入、删除、修改

Delphi ADOQuery连接数据库的查询、插入、删除、修改

 

//查询记录
procedure TForm1.Button1Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Add('select * from YourTABLE where 查询条件');
ADOQuery.Open;
 
//插入记录
procedure TForm1.Button2Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='insert into YourTABLE(字段1,字段2) values(:字段1,:字段2)';
// ADOQuery.SQL.Add('insert into YourTABLE values(:字段1)');
ADOQuery.Parameters.ParamByName('字段1').Value:=trim(Edit1.Text);
ADOQuery.Parameters.ParamByName('字段2').Value:=trim(Edit2.Text);
ADOQuery.ExecSQL;
end;
//删除记录
procedure TForm1.Button3Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='Delete from YourTABLE where 字段3=:字段3';
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add('Delete from NEW_TABLE where 字段3=:字段3');
ADOQuery.Parameters.ParamByName('字段3').Value:=trim(Edit3.Text);
ADOQuery.ExecSQL;
//删除记录也可用DeleteRecords()函数
procedure DeleteRecords(AffectRecords: TAffectRecords = arAll);  
这个函数有一个参数:AffectRecords可以取如下的值:  
1、arCurrent :删除当前记录  
2、arFiltered :删除符合Filter过滤后的所有记录(如果你使用Filter过滤的话)  
3、arAll          :删除所有记录  
4、arAllChapters :Delete affects all chapters(ADO chapters)
//修改记录
procedure TForm1.Button4Click(Sender: TObject);
begin
ADOQuery.Close;
ADOQuery.SQL.Clear;
ADOQuery.SQL.Text:='Update YourTABLE SET 字段4=:字段4';
//这里没有添加where的条件判断,实际使用时,注意添加判断
// ADOQuery.SQL.Add('Update YourTABLE SET 字段4=:字段4');
ADOQuery.Parameters.ParamByName('字段4').Value:=trim(Edit4.Text);
ADOQuery.ExecSQL;
//即时更新插入、删除、修改后的记录
在上面插入、删除、修改的语句后添加如下代码即可:
ADOQuery.Close;
ADOQuery.SQL.Add('select * from YourTABLE where 查询条件');
ADOQuery.Open;
//使用ADOQuery时注意:

1、如果你需要更改数据,query.requestlive必须为true

2、如果有输入参数的时候,容易出错,通常的错法是这样:
比如:“WHERE abc = : abc”
改正如下:“WHERE abc=:abc”就是说=:前后都不能留空格。
3、ADOQuery.Open与ADOQuery.ExecSQL 有不同之处。
ADOQuery.Open一般用在查询,select时候;而ADOQuery.ExecSQL用在insert,delete,update等。

 

//RzComboBox加载下拉框

RzComboBox1.Items.Clear;
ADOQuery1.Close;
ADOQuery1.open; //重新加载公司
while not ADOQuery1.eof do
begin
RzComboBox1.Items.add(ADOQuery1.FieldByName('gs').asString);
ADOQuery1.next;
end;

 

//删除确认框

begin
if MessageBox(self.Handle,'真的要删除吗?','提示',MB_OKCANCEL OR MB_ICONINFORMATION) = IDOK then
begin
ADOQuery2.delete;//删除
end
else
begin
ADOQuery2.Refresh;// 不删除
end;
end;

 

//日期时间段查询

var
str:string;
rq1,rq2,rq3,rq4:string;
begin
rq1:=DateToStr(RzDateTimeEdit2.date);
rq2:=DateToStr(RzDateTimeEdit3.date);
rq3:=DateToStr(RzDateTimeEdit4.date);
rq4:=DateToStr(RzDateTimeEdit5.date); //查询语句中字符串用三个单引号(表示一个单引号) ,用四个单引号表示一个双引号
str:='select * FROM dz WHERE (rq between #'+rq1+'# and #'+rq2+'# and lb='+'''入库'''+') or (rq between #'+rq3+'# and #'+rq4+'# and lb='+'''付款''' +')';
ADOQuery2.Close;
ADOQuery2.SQL.Clear;
ADOQuery2.SQL.Add(str);
ADOQuery2.Open;
ADOQuery2.last;

end;

//限制输入

procedure TForm1.Edit1KeyPress(Sender: TObject; var Key: Char);
begin //只能输入数字和一个小数点
begin
if not (key in ['0'..'9','.',#8]) then
key:=#0;
if (key='.') and (Pos('.',Edit1.Text)>0) then
key:=#0;
end;
end;

//添加实例

procedure TForm1.RzButton1Click(Sender: TObject);

var
rk,sfdz:string;
jk2:real;

begin
if RzComboBox1.Text='' then
begin
RzComboBox1.SetFocus;
abort;
end;
if Edit1.Text='' then
begin
Edit1.setfocus;
abort;
end;
if RadioButton1.Checked then
begin
rk:='入库';
jk2:=StrToFloat(Edit1.Text);
sfdz:='未对帐';
end
else
begin
rk:='付款';
jk2:=-1*StrToFloat(Edit1.Text); //付款为负数
sfdz:='-----';
end;

ADOQuery2.Close;
ADOQuery2.open;
ADOQuery2.Append;
ADOQuery2.Fields.FieldByName('rq').Value:=RzDateTimeEdit1.date;
ADOQuery2.Fields.FieldByName('gs').Value:=RzComboBox1.Text;
ADOQuery2.Fields.FieldByName('lb').Value:=rk;
ADOQuery2.Fields.FieldByName('je').Value:=jk2;
ADOQuery2.Fields.FieldByName('dz').Value:=sfdz;
ADOQuery2.post;
ADOQuery2.last;
RzComboBox1.Text:='';
Edit1.Text:='';

end;

//修改实例

procedure TForm1.RzButton2Click(Sender: TObject);
begin
ADOQuery2.edit; //修改
ADOQuery2.fieldbyname('dz').asstring:='√';
ADOQuery2.post;
end;

 

//备份实例

procedure TForm1.bfExecute(Sender: TObject);
var
path:string;
begin
if SaveDialog1.Execute then
if SaveDialog1.FileName <> '' then
begin

path := ExtractFilePath(application.ExeName);

try
copyfile(pchar(path+ 'data.mdb'), pchar(SaveDialog1.FileName+'.bak'), false);
showmessage('备份成功!');
except
showmessage('备份失败,请重试!');
end;
end;
end;

//导入excel实例,放入excel控件

procedure TForm1.pldrExecute(Sender: TObject);
var
dr:string;
nm:string;
Excel: OleVariant;
iRow,iCol : integer;
xlsFilename: string;
const
BeginRow = 2; BeginCol = 1;
begin
OpenDialog1.Title := '请选择正确的excel文件';
OpenDialog1.Filter := 'Excel(*.xls)|*.xls';
if OpenDialog1.Execute then
dr:= OpenDialog1.FileName;
if (dr = '') then
begin
showmessage('文件错误');
exit;
end;
xlsFilename := dr;
try
Excel := CreateOLEObject('Excel.Application');
except
Application.MessageBox('excel没有安装', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Exit;
end;
Excel.Visible := false;
Excel.WorkBooks.Open(xlsFilename);
try
iRow := BeginRow;
iCol := BeginCol;

while trim(Excel.WorkSheets[1].Cells[iRow,iCol].value) <> '' do begin
with ADOQuery2 do begin
Append;
Fields[1].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol].value);
Fields[2].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+1].value);
Fields[3].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+2].value);
Fields[4].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+3].value);
Fields[5].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+4].value);
Fields[6].AsString := trim(Excel.WorkSheets[1].Cells[iRow,iCol+5].value);
iRow := iRow + 1;
end;

end;
Excel.Quit;
ADOQuery2.UpdateStatus ;
ADOQuery2.Last;
except
Application.MessageBox('导入数据出错', '提示信息', MB_OK+MB_ICONASTERISK+MB_DEFBUTTON1+MB_APPLMODAL);
Excel.Quit;
exit;
end;
nm:='数据导入成功'+inTtoStr(iRow-2)+'条' ;
MessageBox(GetActiveWindow(),'数据导入成功', '提示信息', MB_OK + MB_ICONWARNING);
showmessage(nm);
end;

 

 

 

//添加防止重复值

procedure TForm3.Button1Click(Sender: TObject);
begin
if Edit1.Text='' then
begin
Edit1.SetFocus;
showmessage('不能为空');
abort;
end;
with Form1.ADOQuery1 do
begin
Close;
SQL.Clear;
SQL.Add('select gs from gs');
Open;
First; //防止输入重复值

While Not Eof do
begin
if Form1.ADOQuery1.FieldByName('gs').AsString
<> Trim(Edit1.Text) Then
begin
Next;
end
else
begin
Form1.ADOQuery1.SQL.Clear;
Form1.ADOQuery1.SQL.Add('select * from gs');
Form1.ADOQuery1.Open; //刷新
Application.MessageBox('已有此公司','错误提示',0);
Edit1.SetFocus;
exit;
end;
end;
end;
Form1.ADOQuery1.Close;
Form1.ADOQuery1.Open;
Form1.ADOQuery1.Append;
Form1.ADOQuery1.Fields.FieldByName('gs').Value:=trim(Edit1.Text);
Form1.ADOQuery1.post;
Form1.ADOQuery1.Close;
Form1.ADOQuery1.SQL.Clear; //重新显示
Form1.ADOQuery1.SQL.Add('select * from gs');
Form1.ADOQuery1.Open;


end;

posted @ 2021-03-05 19:28  jrhd  阅读(1197)  评论(0)    收藏  举报