是关于存储的问题,看了就会骂我苯的!(100分)

  • 主题发起人 主题发起人 amyfun
  • 开始时间 开始时间
A

amyfun

Unregistered / Unconfirmed
GUEST, unregistred user!
我从两个表中调出部分字段,然后存储到一个新表中,首先我
新建立一个表__借阅登记表(jydjb),表的字段为如下所示:(这些字段包括了两个表中待提取出的所有字段,我的想法是把这些提取出的字段存到新表中。)
create table jydjb
(sh int not null, /*书号*/
sm char(30) null, /* 书名*/
ym char(30) null, /*译名*/
zgbh char(8) not null, /*职工编号*/
jyz char(10) not null, /*借阅者*/
zw char(20) not null, /*职位*/
jyks char(30) null, /*借阅科室*/
jysq datetime, /*借阅日期*/
primary key (.sh,zgbh))

编程如下:
query1.sql.add('insert into jydjb values (:jydjh,:sh,:sm,:ym,:zgbm,:zgbm,:jyz,:zw,'+
':jyks,:jysq')
query1.parambyname('sh').asinteger=integer(edit1.text);
query1.parambyname('sm').asstring=edit2.text;
query1.parambyname('ym').asstring=edit3.text;
query1.parambyname('zgbh').asstring=edit4.text;
query1.parambyname('jyz').asstring=edit5.text;
......等等
query1.execute;

在Delphi下运行总是通不过,一旦通过,当按存储按钮时,系统提示....EDBEngineError...."Invalid parameter"的提示框.
 
1. query1.sql.add语句最后少一个+')', 整个sql语句会有问题.
2. 估计query1.parambyname('jysq').asdatetime赋值不对.
3. 最好用insert into table1 (fieldlist) values (valuelist)
这样比较好, 而且容易查错.
 
同意Iknow
query1.sql.add语句最后少一个+')', 整个sql语句会有问题.
另外:
1. 可能有参数的名称写错了。
2.可能有参数的类型赋值错误。

 
同意Iknow
query1.sql.add语句最后少一个+')', 整个sql语句会有问题.
另外:
1. 可能有参数的名称写错了。
2.可能有参数的类型赋值错误。

 
请在sql里面的table加引号.如有路径,也要把路径引起来.
如: query1.sql.add('insert into jydjb values ...
==> query1.sql.add('insert into "jydjb" values ...
 
你在query1.execute前察看一下query1.sql.text的内容,看看是不是对...

例如:
在query1.execute前加上一句
messagedlg(query1.sql.text,mtinformation,[mbok],0);
看一下信息再改你的程序....
 
我一般用Kent的方法。
且showmessage(query1.parambyname('jyz').asstring);
 
Everybody:
query1.SQL.Add('insert into "jieshu" values (Suoshuhao,Biaoti,Suoquehao,Bianhao,Keshi,Zhiwei,Renmin,J_riqi,'+') select Suoshuhao,Biaoti,Suoquehao,Bianhao,Keshi,Zhiwei,Renmin,J_riqi from Book.db,Zhigong.db');
query1.ParamByName('Suoshuhao').asstring:=edit1.Text;
query1.ParamByName('Suoquehao').asstring:=edit2.Text;

一按借阅按钮出现.....query1:parameter 'Suoshuhao' not found....的提示,(我没有TStorProc组件,能行吗?)
 
不发sql语句,直接用InsertRecord然后一个字段一个字段地赋值为什么不行,如果可以,能不能给个例子。
 
sql语句有问题,如果不熟可用sql builder做个例子.然后仿照就行了
 
>>Everybody:...一按借阅按钮出现.....query1:parameter 'Suoshuhao' not >>found....的提示.
您是没有定义parameter 'Suoshuhao' 呀?!您在开始时写出了如何定义parameter.
我建议:
1.把select 'Suoshuhao',Biaoti,'Suoquehao'处用常量代替.然后用update
语句修改.
2.用StoredProc1.StoredProc的写法象您的'insert into "jieshu" values...'在1.的常量处用参数代替.
这两个方法我都用过.不难的.
 
多人接受答案了。
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
928
SUNSTONE的Delphi笔记
S
后退
顶部