一个窗体下查询数据库代码如下:procedure Tinquiry.Button1Click(Sender: TObject);
begin
if(Edit18.Text<>'') then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select * from data where 制单号 ='''+trim(edit18.text)+'''';
Query1.Open;
edtdate.Text :=Query1.Fieldbyname('日期').AsString;
edtsn.Text := Query1.Fieldbyname('编号').AsString;
end;end;根据Edit18里输入的制单号查询出对应的日期,编号
现在我想修改查询的日期,并通过点击一个button使修改过的日期、编号代替原来的记录存入数据库,请问该怎么写?“
“制单号”是表关键字
begin
if(Edit18.Text<>'') then
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'select * from data where 制单号 ='''+trim(edit18.text)+'''';
Query1.Open;
edtdate.Text :=Query1.Fieldbyname('日期').AsString;
edtsn.Text := Query1.Fieldbyname('编号').AsString;
end;end;根据Edit18里输入的制单号查询出对应的日期,编号
现在我想修改查询的日期,并通过点击一个button使修改过的日期、编号代替原来的记录存入数据库,请问该怎么写?“
“制单号”是表关键字
解决方案 »
- 请问如何删除从数据库读取的DBGrid的选种内容阿?
- 如何这般向网页提交内容
- 应用服务器重复启动!请大家帮忙!
- 那里有TMSComm这个东西可下载?
- 求救!Microsoft Exchange,如何编程实现WEB受理自动开户?
- 急!如何用delphi控制excel中的图片缩放?
- 有没有高手愿意帮忙c#转一下Delphi,临时有个活,Delphi真心不会写
- Delphi指针的指针怎么表示?
- 在DELPHI5中怎样调用系统(win98或win2000)的copy命令?
- 远程数据存取
- 通过‘汉字转拼音函数’将数据库中“用户名称”字段的每个汉字的拼音的首字母写到“用户拼音”字段,出现异常
- 请问Richedit控件在那个页面?
update data set 日期 ='2009-01-01',编号='newnum' where 制单号= 'qwwqeqeqw'
Query1.FieldByName('字段名').AsString := 'xxxx';
Query1.Post;
begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期='''+edtdate.Text+''' and 编号='''+edtsn+''' from data where 制单号 ='''+trim(edit18.text)+'''';
Query1.Open;
end;
Update 表名 set 列名1=X1,列名2=X2.. where 条件
Query1.FieldByName('字段1').AsString := 'x1';
Query1.FieldByName('字段2').AsString := 'x2';
Query1.FieldByName('字段3').AsString := 'x3';
Query1.FieldByName('字段4').AsString := 'x4';
Query1.Post;
procedure Tinquiry.Button2Click(Sender: TObject); begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期='''+edtdate.Text+''' and 批量='''+Edit9.Text+''' from data where 制单号 ='''+trim(edit5.text)+'''';
Query1.Open;
end;
编译没有问题,
点击按键执行修改记录时提示:
Project Project1.exe raised exception class EOleException with message
'语法错误(操作符丢失)在查询表达式''a' and 批量='b0' from data中。'
请问是怎么回事呢
完整的写法是什么?
当然是要赋的值了~~可以改成这样
Query1.Edit;
Query1.FieldByName('字段1').AsString := x1;
Query1.FieldByName('字段2').AsString := x2;
Query1.FieldByName('字段3').AsString := x3;
Query1.FieldByName('字段4').AsString := x4;
Query1.Post;x1,x2,x3,x4在这里是字符变量~~
x1,x2,x3,x4全是要赋的值的话,那我在写代码的时候并不知道我要改成什么值啊,我是要实现修改的功能啊,要以后要edtdate 里面修改日期,在edtsn里修改编号。
我前面的界面有一个将记录存入数据库的过程:procedure TForm4.N3Click(Sender: TObject);
var str2,str,t1, t2,t3: String;begin
Query3.SQL.Text:= 'select * from PM where 编号 ='''+trim(Form5.Edit1.text)+'''';
Query3.Open;
t1:= Query1.fieldbyname('安规认证').asstring;
t2:= Query1.fieldbyname('商标').asstring;
t3:= Query1.fieldbyname('规格').asstring;
with Query2 do
begin
close;
sql.Clear;
str := 'insert into data(制单号,日期,批量,入库日期,编号,品名规格,制品尺寸,脚径,脚长,安规认证,商标,内芯,外壳,熔丝,铜帽,玻璃管,陶瓷管,外箱,内盒,胶袋,双铜帽,Y值参数,成品电阻范围,米电阻范围,规格,焊锡丝,引脚方向,引线,备注)';
str2 := 'values(:a,:b,:c,:d,:e,:f,:g,:h,:i,:j,:k,:l,:m,:n,:o,:p,:q,:r,:s,:t,:u,:v,:w,:x,:y,:z,:1,:2,:3)';
sql.Text := str + str2;
parameters.ParamByName('a').Value := Trim(Edit5.Text);
parameters.ParamByName('b').Value := Trim(FormatDateTime('yyyy-mm-dd',dtp1.Date));
parameters.ParamByName('c').Value := Trim(Edit9.Text);
parameters.ParamByName('d').Value := Trim(FormatDateTime('yyyy-mm-dd',dtp2.Date));
parameters.ParamByName('e').Value := Trim(edtsn.Text);
parameters.ParamByName('f').Value := Trim(edtps.Text);
parameters.ParamByName('g').Value := Trim(Edit4.Text);
parameters.ParamByName('h').Value := Trim(Edit3.Text);
parameters.ParamByName('i').Value := Trim(edtfl.Text);
parameters.ParamByName('j').Value := t1;
parameters.ParamByName('k').Value := t2;
parameters.ParamByName('l').Value := Trim(Edit6.Text);
parameters.ParamByName('m').Value := Trim(Edit2.Text);
parameters.ParamByName('n').Value := Trim(Edit7.Text);
parameters.ParamByName('o').Value := Trim(Edit1.Text);
parameters.ParamByName('p').Value := Trim(Edit8.Text);
parameters.ParamByName('q').Value := Trim(Edit19.Text);
parameters.ParamByName('r').Value := Trim(Edit15.Text);
parameters.ParamByName('s').Value := Trim(Edit16.Text);
parameters.ParamByName('t').Value := Trim(Edit17.Text);
parameters.ParamByName('u').Value := Trim(Edit21.Text);
parameters.ParamByName('v').Value := Trim(Edit13.Text);
parameters.ParamByName('w').Value := Trim(Edit14.Text);
parameters.ParamByName('x').Value := Trim(Edit12.Text);
parameters.ParamByName('y').Value := t3;
parameters.ParamByName('z').Value := Trim(Edit20.Text);
parameters.ParamByName('1').Value := Trim(Edit11.Text);
parameters.ParamByName('2').Value := Trim(Edit10.Text);
parameters.ParamByName('3').Value := Trim(Memo2.Text);
execsql;end;
end;我不知道怎么用update语句来修改已存储的记录,我试着用前面几位大哥的方法,可是会出现9楼的错误procedure Tinquiry.Button2Click(Sender: TObject); begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期='''+edtdate.Text+''' and 批量 ='''+Edit9.Text+'''where 制单号 ='''+trim(edit5.text)+'''';
Query1.Open;end;
当前提供程序不支持从单一执行返回多个记录集还有问题
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期=QuotedStr(edtdate.Text), 批量=QuotedStr(Edit9.Text) where 制单号 =QuotedStr(trim(edit5.text))';
Query1.Open;end;
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期=QuotedStr(edtdate.Text), 批量=QuotedStr(Edit9.Text) where 制单号 =QuotedStr(trim(edit5.text))';
Query1.ExecSQL; //当增加或修改数据时,要用ExecSQL,查询数据时用openend;
少了什么东西吗?
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='update data set 日期=QuotedStr(edtdate.Text), 批量=QuotedStr(Edit9.Text) where 制单号 =QuotedStr(trim(edit5.text))';
Query1.ExecSQL;end;
编译能过,但执行修改操作时会提示‘QuotedStr’未定义
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:= 'update data set 日期='''+edtdate.Text+''',批量 ='''+Edit9.Text+'''where 制单号 ='''+trim(edit5.text)+'''';
Query1.ExecSQL;end;
procedure Tinquiry.Button2Click(Sender: TObject); begin
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='update data set 日期='''+edtdate.Text+''', 批量='''+Edit9.Text+''' from data where 制单号 ='''+trim(edit5.text)+'''';
//Query1.SQL.Text:='update data set 日期=QuotedStr(edtdate.Text), 批量=QuotedStr(Edit9.Text) where 制单号 =QuotedStr(trim(edit5.text))';
Query1.ExecSQL;end;我前面也用他的试过了,出现问题:Project Project1.exe raised exception class EOleException with message ‘语法错误(操作符丢失)在查询表达''b00'from data'中’
怎么办啊,
我快崩溃了,不知道是不是程序其他的部分的错误,
估计大哥你也要被我问得崩溃了
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Text:='update data set 日期='''+edtdate.Text+''', 批量='''+Edit9.Text+''' where 制单号 ='''+trim(edit5.text)+'''';//他的语句多了from data,去掉即可
Query1.ExecSQL;end;