| 网站首页 | 业界新闻 | 小组 | 威客 | 人才 | 下载频道 | 博客 | 代码贴 | 在线编程 | 编程论坛
欢迎加入我们,一同切磋技术
用户名:   
 
密 码:  
共有 1778 人关注过本帖
标题:[求助]有关Delphi方面的问题,新手问题,大家都会
只看楼主 加入收藏
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
 问题点数:0 回复次数:11 
[求助]有关Delphi方面的问题,新手问题,大家都会

我是刚学delphi的一名学生

遇到一个问题:
就是一个充值系统,要求充值成功的时候要把本次充值记录到“交费登记表中”,然后在“消费表”里把相应的充值额加进去。。

ADOQuery1.Close ;
ADOQuery1.SQL.Clear ;
ADOQuery1.SQL.text :='select * from 交费登记表';
ADOQuery1.Open ;
ADOQuery1.Append ;
ADOQuery1.FieldByName('卡号').AsString :=trim(Edit1.Text );
ADOQuery1.FieldByName('交款人').AsString :=trim(Edit2.Text );
ADOQuery1.FieldByName('交款额').AsString :=trim(Edit3.Text );
ADOQuery1.FieldByName('身份').AsString :=trim(ComboBox1.Text );
ADOQuery1.FieldByName('交款时间').Asdatetime :=DateTimePicker1.Date;

ADOQuery2.Close ;
ADOQuery2.SQL.Clear ;
ADOQuery2.SQL.text :='update 消费表 set 余额=余额+'''+Edit3.text+''' where 卡号='''+Edit1.text+'''';
ADOQuery2.Open ;

在下感激不禁,,,,

搜索更多相关主题的帖子: Delphi 都会 trim AsString 
2006-04-04 20:44
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 
用的是ACCESS数据库
2006-04-04 20:56
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 

为了测试一下,我在ADOQuery2的SQL属性里输入update 消费表 set 余额=100
再将ADOQuery2的Action设计为Ture 结果居然报错,但是我去表中察看,余额已经全部被改成了100了

为什么?

2006-04-04 21:03
ysp_1984
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:371
专家分:0
注 册:2006-1-5
收藏
得分:0 

ADOQuery2.Close ;
ADOQuery2.SQL.Clear ;
ADOQuery2.SQL.text :='update 消费表 set 余额=余额+'''+Edit3.text+''' where 卡号='''+Edit1.text+'''';
ADOQuery2.Open ;
ADOQuery2.Open ;这句代码不对,应该为ADOQuery2.ExecSQL;因为执行update语句,ADOQuery2没有返回值.ADOQuery2.Open;一般用于select语句.
把上面的红色几句该为:
在开始的时候定义两个局部变量
var
sum,x: float;


with ADOQuery2 do
begin
close;
SQL.clear;
SQL.text:='select * from 消费表';
prepared;
open;
if not locate('卡号',trim(edit1.text),[]) then
begin
showmessage('该卡号不存在');
end
else
begin
x:=strtofloat(FieldByName('余额').AsString);
sum:=x+strtofloat(trim(edit3.text));
FieldByName('余额').AsString :=floattostr(sum);
close;
end;
end;
你看看行不行.我没有测试过.

[此贴子已经被作者于2006-4-5 16:47:28编辑过]


心中的那片蓝天,永远为你而存在... ...
2006-04-05 01:21
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 
Delphi好深奥,要好好学。。多谢斑竹赐教,我去试试看
2006-04-05 13:45
ysp_1984
Rank: 5Rank: 5
等 级:贵宾
威 望:15
帖 子:371
专家分:0
注 册:2006-1-5
收藏
得分:0 

ADOQuery2.SQL.text :='update 消费表 set 余额=余额+'''+Edit3.text+''' where 卡号='''+Edit1.text+'''';
这里的SQL语句中edit3.text 和edit1.text应该换为两个变量。你在为他们赋值。这样应该可以。比上面更简单。

心中的那片蓝天,永远为你而存在... ...
2006-04-05 16:53
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 


直接这样运行
运算结果跟字符串相加似的,
余额=100 冲值50 结果数据库中边成了10050
我把 余额设成的int 怎么不能直接运算
Edit1的可以不用换吧?
谢谢斑竹。。。斑竹就是尽责。。
我是昨天在网上搜搜看怎么解决的,就进了这论坛。。
没想到斑竹这么尽责,哈哈 这里的会员肯定也都很热情了。
以后有问题就来这论坛请教。。
再次谢谢老乡,俺也是山东人

[此贴子已经被作者于2006-4-5 19:48:42编辑过]

2006-04-05 18:14
makebest
Rank: 8Rank: 8
等 级:蝙蝠侠
威 望:3
帖 子:658
专家分:962
注 册:2005-3-17
收藏
得分:0 

如果给 sql.text 赋值,不需要 sql.clear。
余额当然得是数值型的,你加的时候,为什么要用 单引号 呢?

2006-04-06 12:41
初学Delphi
Rank: 3Rank: 3
等 级:新手上路
威 望:9
帖 子:330
专家分:0
注 册:2006-4-4
收藏
得分:0 
那个clear是习惯写法,可以不用

我以前都写sql.Add(……);

单引号你说的是这里最后吧
ADOQuery2.SQL.text :='update 消费表 set 余额=余额+'''+Edit3.text+''' where 卡号='''+Edit1.text+'''';

那里是我从程序上直接贴过来的 多复制了一个单引号

ADOQuery2.SQL.text :='update 消费表 set 余额=余额+'''+Edit3.text+''' where 卡号='''+Edit1.text+''';
ADOQuery2.perpared;
ADOQuery2.execsql;
我这样就能直接想加 结果也对
不是说Edit.text里面的是字符型 必须转换类型才能相加么?
我的不知道为什么可以

[此贴子已经被作者于2006-4-6 12:57:33编辑过]

2006-04-06 12:53
bbkjsu
Rank: 1
等 级:新手上路
帖 子:10
专家分:0
注 册:2006-4-7
收藏
得分:0 
各位高手好:请问如何实现在主窗体中点击一个按钮后,弹出一个子窗体---------------------新手的徒弟

2006-04-07 07:55
快速回复:[求助]有关Delphi方面的问题,新手问题,大家都会
数据加载中...
 
   



关于我们 | 广告合作 | 编程中国 | 清除Cookies | TOP | 手机版

编程中国 版权所有,并保留所有权利。
Powered by Discuz, Processed in 0.025622 second(s), 7 queries.
Copyright©2004-2024, BCCN.NET, All Rights Reserved