我用ADO连接数据库,现在要插入数据。判断条件是日期和仪表号,如果数据库里
没有该仪表号和这一天的数据,就直接插入数据。如果有了数据就更新数据,这个如何实现?
没有该仪表号和这一天的数据,就直接插入数据。如果有了数据就更新数据,这个如何实现?
解决方案 »
- 弱弱的问一个简单计算问题
- 做了一个服务,怎么在安装时把文件所在路径写到注册表下?
- 菜单->树
- 如何提取*.text里的数据?
- 求救:一个关于blob字段的存储问题,adodb.pas修改后这么编译,在c/s系统中用什么coursorlocation
- 如何控制tdbchart的legend中文本内容的显示顺序
- 关于treeview的问题(1)加分贴
- 检查数据的有效性,最好是在哪一个事件中检查?怎样写,可否给点例子。
- treeview怎样设置背景图?或者使他透明?
- delphi初学者的困惑
- 请问,如何在DELPHI里打开WORD,EXCEL的文档??
- 使用Ado打开Excel文件件的问题,总是解决不了!!
begin
close;
sql.clear;
sql.text := 'select * from yourtable ' +
'where datefield = yourdate and number = yournumber ';
open;
if recordcount = 0 then
begin
//插入操作;
end
else begin
//更新操作;
end;
end;
begin
active:=false;
commandtext:= 'select * from yourtable ' +
'where datefield = yourdate and number = yournumber ';
active:=true;
if recordcount = 0 then
begin
//insert操作;
end
else begin
//update操作;
end;
end;
begin
rq:=datetostr(now);
bh:=bedit.Text;
data.nengyuanTable.Close;
data.nengyuanTable.open;
if messagedlg('请您确认你填入的今日该表号的数据正确吗?',mtconfirmation,[mbyes,mbno],0)=mryes then
begin
with data.nyq do
begin
close;
data.nyq.SQL.Clear;
data.nyq.SQL.text := 'select * from nengyuan ' +
'where riqi=rq and biaohao=bh';
data.nyq.Open;
if recordcount = 0 then
begin
data.nengyuanTable.last;
data.nengyuanTable.Append;
data.nengyuanTable.FieldByName('pname').AsString:=nyedit.Text;
data.nengyuanTable.FieldByName('chejian').AsString:=cjedit.Text;
data.nengyuanTable.FieldByName('biaohao').AsString:=bedit.Text;
data.nengyuanTable.FieldByName('biaoshu').AsString:=duedit.Text;
data.nengyuanTable.FieldByName('riqi').AsString:=timeedit.Text;
data.nengyuanTable.FieldByName('beizhu').AsString:=memo1.Lines.Text;
data.nengyuanTable.FieldByName('rname').AsString:=redit.Text;
data.nengyuanTable.post;
end
else begin
data.nengyuanTable.FieldByName('biaoshu').AsString:=duedit.Text;
data.nengyuanTable.UpdateRecord;
end;
end;
//except
//showmessage('产生错误!!!')
//end;
end;
showmessage('添加数据成功,请返回');
close;
end;现在还报错,说rq无效
begin
close;
sql.clear;
sql.text := 'if Exists(select * from yourtable
where datefield = yourdate and number = yournumber)
update YourTable set AA1=:AA1,..... where datefield = yourdate and number = yournumber
else insert into YourTable values (DateField,.....) ';
ExecSQL;
end;
ADODataSet.close;
ADODataSet.commandText:='select * from yourtable';
ADODataSet.open;然后用locate的方法,
if ADODataSet.locate(字段名,字段值,[])=true then
ADODataSet.edit
else
ADODataSet.insert;这样可以减少打开数据库的次数,加快查询速度。
'where riqi='+ QuotedStr(rq)+' and biaohao='+ QuotedStr(bh);
data.nengyuanTable.UpdateRecord;《--------------在这里说nengyuantable:dataset not in edit or insert mode
救命啊
data.nengyuantable.Edit;
data.nengyuanTable.FieldByName('biaoshu').AsString:=duedit.Text;
data.nengyuanTable.UpdateRecord;
begin
active:=false;
commandtext:= 'select * from yourtable ' +
'where datefield = yourdate and number = yournumber ';
active:=true;
if recordcount = 0 then
begin
//insert操作;
end
else begin
//update操作;
end;
end;可以的!