Tquery.parambyname()用法有何要求?指针问题?急急!!(100分)

  • 主题发起人 主题发起人 cdy
  • 开始时间 开始时间
C

cdy

Unregistered / Unconfirmed
GUEST, unregistred user!
procedure TequdatawhForm.updataButtonClick(Sender: TObject);//此按钮是为了实现将各字段值赋给Edit.Text,以便对数据进行修改
begin
xequform.Query1.close;
editmc.Text:= xequform.Query1.ParamByName('设备名称').asstring;
editbh.Text:= xequform.Query1.ParamByName('制造编号').asstring;
. . . . . . . . . . . . . . . .
. . . . . . . . . . . . . . . . .. . .
try
xequform.Query1.ExecSQL;
except
xequform.Query1.Open;
end;

end;
执行后总是报错“找不到字段名”,先前Query.SQL属性已有“Select * from设备主表”命令,且属性设置正确。
数据表由access97建立

TDBnavigator已与Tquery连接,不知在Tnavigator中移动记录指针是否影响到Tquery,如何在Tquery中定位指针?
 
DBnavigator与query没有影响看看paramcheck属性是否为真
或打开字段编辑器看看origin属性是否为当前数据库的全称列如
DBDEMOS."parts.DB".VendorNo


 
试一试这样
begin
xequform.Query1.close;
editmc.Text:= xequform.Query1.Params.ParamByName('设备名称').asstring;
^^^^^^^
editbh.Text:= xequform.Query1.Params.ParamByName('制造编号').asstring;
^^^^^^^
try
xequform.Query1.ExecSQL;//无返回值的用ExecSQL
except
xequform.Query1.Open;//有返回值的用Open
end;
end;
 
你是使用BDE->ODBC还是直接使用BDE,如果是The former,那字段名以及表名不要用中文,
其实在做数据库方面的程序时,最好不要用中文表名、字段名,会出现很多问题。

另,请问Query1.SQL具体是什么SQL语句?
Select * from 设备主表 where 设备名称=:设备名称 and 制造编号=:制造编号
是不是上面那句啊?
 
SQL语句贴出来看看!Access支持汉字字段,可以放心用。
 
应该是FieldByName吧,parambyname是设置参数的
 
呵呵,rebortcool已经回答了
 
拼sql串吧,百拼百验
 
首先你的Query1.SQL里有没有动态参数(即有没有类似Where 字段名= :aa)
如果没有就肯定不行!因为参数是Query1.SQL语句产生的!
然后editmc.Text:= xequform.Query1.ParamByName('设备名称').asstring不对
你到底是要访问'设备名称'这个字段的值还是要访问'设备名称'这个参数!
如果是要访问'设备名称'这个字段的值:应该是:
editmc.Text:= xequform.Query1.FieldByName('设备名称').asstring
如果是要访问'设备名称'这个参数,应该是:
editmc.Text:= xequform.Query1.ParamByName('设备名称').Value
并设置这个参数的类型!


 
看你的代码是要取出字段的内容,要用
editmc.Text:= xequform.Query1.FieldByName('设备名称').asstring;
editbh.Text:= xequform.Query1.ParamByName('制造编号').asstring;
..............................................................
另外Tquery的指针?是指记录指针把。
query1.first;
query1.Prior;
query1.next;等等
 
>>为了实现将各字段值赋给Edit.Text,以便对数据进行修改
那应该是这样写才对:editmc.Text:= xequform.Query1.ParamByName('设备名称').asstring
你的editmc.Text:= xequform.Query1.ParamByName('设备名称').asstring,如果真是如江维
所言,你访问'设备名称'这个参数是干什么用的??
你的下面的语句:
try
xequform.Query1.ExecSQL;
except
xequform.Query1.Open;
end;
恕我才梳学浅,也没看懂,先是向表里修改;出现错误然后还要打开表???
有这种写法吗???



 
to :liuxiaouo
有倒是有的,可能在不知道sql语句要查询还是要修改的情况下,这样写是没问题的,
特别是在动态地使用SQL语句时。
 
I don't understand when you close the Tquery then wants to get parameters value.
 
你查一下query 的Params属性看看有没有‘设备名称’,‘制造编号'’
如果没有你加入就行了
 

Similar threads

S
回复
0
查看
3K
SUNSTONE的Delphi笔记
S
S
回复
0
查看
2K
SUNSTONE的Delphi笔记
S
I
回复
0
查看
709
import
I
D
回复
0
查看
859
DelphiTeacher的专栏
D
后退
顶部