急,大哥给我说一下,这是怎么回事?

cwg789 2003-08-22 01:44:13
我做一个数据库更新的程序,我想在Edit2中输入增加的Quantity(数量),但是编译能够通过,但是白执行时,就说我的nTemp附近有错误,请问各位高人,这是怎么回事,以下是我的代码
var
nTemp: Integer;
begin
nTemp := StrToInt(Edit2.text);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Update stock ');
query1.SQl.Add('set Quantity = Quantity + nTemp');
query1.SQl.Add('where PartName = '''+ edit1.Text+'''');
query1.SQl.Add('AND ProductName = '''+ edit3.Text+'''');
...全文
69 11 打赏 收藏 转发到动态 举报
写回复
用AI写文章
11 条回复
切换为时间正序
请发表友善的回复…
发表回复
zjqyb 2003-08-22
  • 打赏
  • 举报
回复
with Query do
begin
Close;
SQL.Clear;
sql.Add(Format('Update stock set Quantity = Quantity +%s',[Edit2.text]));
sql.Add('where PartName = '''+ edit1.Text+'''');
SQl.Add('AND ProductName = '''+ edit3.Text+'''');
end;
MichealLee 2003-08-22
  • 打赏
  • 举报
回复
语法错了。

nTemp属于delphi的变量,你写到sql string中去了。

修改这一句:query1.SQl.Add('set Quantity = Quantity + nTemp');

--改为:query1.SQl.Add('set Quantity = Quantity '''+ nTemp+'''');
wdsimon 2003-08-22
  • 打赏
  • 举报
回复
修正,上面应为:showmessage('edit2存在非法字符!');
wdsimon 2003-08-22
  • 打赏
  • 举报
回复
1、写个函数检查一下EDIT1的值是否全部是数字:
如返回结果为FALSE,则存在非法字符
function TForm1.checknum(str: string): boolean;
var
i:integer;
s:string;
begin
s:=trim(str);
if s<>'' then result:=true else
begin
result:=false;
exit;
end;
for i:=1 to length(s) do
begin
if (ord(s[i])>57) or (ord(s[i])<48) then
begin
result:=false;
exit;
end;
end;
end;

2、你的代码:
var
ntmp:integer;
begin
if not checknum(edit2.Text) then
begin
showmessage('edit1存在非法字符!');
exit;
end;
ntmp:=StrToInt(Edit2.text);
with query1 do
begin
close;
sql.clear;
sql.add(''Update stock set Quantity = Quantity+:AA ');
sql.add('where PartName =:BB and ProductName = :CC ');
parameters[0].value:=ntemp;
parameters[1].value:=edit1.Text;
parameters[2].value:=edit3.Text;
ExecSQL;
end;
end;


td427 2003-08-22
  • 打赏
  • 举报
回复
在Where 和 And 前面加一个空格。编译时检查为合理字符串,但运行时为非法字符。
ZyxIp 2003-08-22
  • 打赏
  • 举报
回复
var
nTemp: Integer;
begin
nTemp := StrToInt(Edit2.text);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Update stock ');
query1.SQl.Add('set Quantity = Quantity + nTemp');
query1.SQl.Add('where PartName = '''+ edit1.Text+'''');
query1.SQl.Add('AND ProductName = '''+ edit3.Text+'''');
---------------------------------
var
nTemp: Integer;
SQLText:String;
begin
nTemp := StrToInt(Edit2.text);
SQLText:='将要执行的SQL语句用字符串组合成有效的';
Showmessage(SQLText);//显示出来看一看是否正确注意空格

With Query1 do
begin
Close;
SQL.Clear;
SQL.Add(SQLText);
ExecSQL;
end;
fhuibo 2003-08-22
  • 打赏
  • 举报
回复
F8跟踪一下就知道了
angle097113 2003-08-22
  • 打赏
  • 举报
回复
你出现问题的原因是在语句与与语句之间的空格的问题
有的语句之间没有空格 编译的时候计算机认为是STRING所以编译可以通过
但是执行的时候就会有错误
tiexinliu 2003-08-22
  • 打赏
  • 举报
回复
试试另一种感觉吧:
var
nTemp: Integer;
begin
nTemp := StrToInt(Edit2.text);
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('Update stock ');
query1.SQl.Add('set Quantity =Quantity+:var1');
query1.SQl.Add('where PartName = '''+ edit1.Text+'''');
query1.SQl.Add('AND ProductName = '''+ edit3.Text+'''');
Query1.ParamByName('var1').AsInteger:=ntemp;




PhilexPei 2003-08-22
  • 打赏
  • 举报
回复
query1.SQl.Add('set Quantity = Quantity + ' + inttostr(nTemp));
query1.SQl.Add(' where PartName = '''+ edit1.Text+'''');//where前面加空格
PhilexPei 2003-08-22
  • 打赏
  • 举报
回复
StrToInt(trim(Edit2.text));试试
程序 = 数据结构 + 算法  程序是为了解决实际问题而存在的。然而为了解决问题,必定会使用到某些数据结构以及设计一个解决这种数据结构的算法。如果各种编程语言是程序员的招式,那么数据结构和算法就相当于程序员的内功。编程实战算法,不是念PPT,我们讲的就是实战与代码实现与企业应用。程序 = 数据结构 + 算法                ——图灵奖得主,计算机科学家N.Wirth(沃斯)作为程序员,我们做机器学习也好,做python开发也好,java开发也好。有一种对所有程序员无一例外的刚需 —— 算法与数据结构日常增删改查 + 粘贴复制 + 搜索引擎可以实现很多东西。同样,这样也是没有任何竞争力的。我们只可以粘贴复制相似度极高的功能,稍复杂的逻辑没有任何办法。语言有很多,开发框架更是日新月异3个月不学就落后我们可以学习很多语言,很多框架,但招聘不会考你用5种语言10种框架实现同一个功能。真正让程序员有区分度,企业招聘万年不变的重点 —— 算法与数据结构。算法代表程序员水平的珠穆朗玛。 本视频由微软全球最有价值专家尹成录制,拒绝念PPT,代码实战数据结构与算法导论。除了传统数据结构算法,加入高并发线程安全数据结构,分布式负载均衡算法,分布式哈希表,分布式排序等等现代算法。  算法,晦涩难懂,却又是IT领域受重视的素养之一。可以,算法能力往往决定了一个程序员能够走多远。因此,BAT/FLAG等国内外各大名企非常喜欢在面试环节考核求职者的算法编程,这也成为了无数准程序员们过不去的一道“坎”。如何入门并成为一名出色的算法工程师?但无论半路出家还是科班出身,除学生时代搞算法竞赛的同学外真正用心学习过算法与数据结构太少太少。对于后期想要学习算法与数据结构却不得不面对以下问题:没有自己的知识框架,无法关联知识点,学习效率低有疑问而无人解答,有问题无法理解全靠猜测,一个问题卡好几天市面上资料题解质量参差不齐,正确性未可知Google算法-工程师尹成大哥学习算法。

2,495

社区成员

发帖
与我相关
我的任务
社区描述
Delphi 数据库相关
社区管理员
  • 数据库相关社区
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告
暂无公告

试试用AI创作助手写篇文章吧