一个简单问题,把我拯了一上午,没蛰,想大家帮我看看!救救我!谢谢!(我没分拉,欠着好吗?)(0分)

  • 主题发起人 主题发起人 developman
  • 开始时间 开始时间
D

developman

Unregistered / Unconfirmed
GUEST, unregistred user!
一个简单问题,把我拯了一上午,没蛰,想大家帮我看看!谢谢!
*****************************
function querybj(s:string):string;
begin
with datamodule2.stuqu do
begin
close;
sql.Clear ;
sql.Add('select * ');
sql.Add('from Student');
sql.Add('where lsnum=:ss');
parambyname('ss').asstring:=form1.Edit2.Text ;
prepare;
open;
end;
if datamodule2.stuqu.ParamByName('Sbj').asstring='Ad' then
result:='Ad'
else if datamodule2.stuqu.ParamByName('Sbj').asstring='St' then
result:='St'
else if datamodule2.stuqu.ParamByName('Sbj').asstring='Te' then
result:='Te'
else
begin
messagebox(form1.handle,'哈哈哈','系统出错!',mb_ok);
form1.close ;
end;
end;


procedure tdatasthread.Execute;
{ Place thread code here }
var s1:string;
begin
s1:=form1.edit2.text;
if querybj(s1)='Ad' then//停在该句处
begin
form4.ShowModal ;
end
else if querybj(s1)='St' then
begin
form3.ShowModal ;
end
else if querybj(s1)='Te' then
begin
form3.ShowModal ;
end;
end;

可以运行,就是当我输入数据,让它查询是它提示类型不匹配,并始终停在(做注释那一句);
我改来好多位置都不行,嗨!竟被这简单的问题折腾一上午,我真是痛苦,想找个位置发泄
但,还是要谢谢各位高手!向您学习
 
同意楼上的~~~
 
parambyname('ss').asstring:=form1.Edit2.Text ;
是否应该改为parambyname('ss').asstring:=s;
 
>>datamodule2.stuqu.ParamByName('Sbj').asstring='Ad' 是做什么?
我觉得是否是数据库查询返回的结果啊?是否应该用:datamodule2.stuqu.FieldByName('Sbj').AsString = 'Ad' 啊。
 
谢谢各位高手的赐教,首先我更正我的错误;
NO1:parambyname('ss').asstring:=form1.Edit2.Text ;中的'ss'应为's';
我按照firecar朋友的答案改拉,但不是老问题,希望大家在帮我看看好吗?
 
谢谢各位高手的赐教,首先我更正我的错误;
NO1:parambyname('ss').asstring:=form1.Edit2.Text ;中的'ss'应为's';
我按照firecar朋友的答案改拉,但不是老问题,希望大家在帮我看看好吗?
 
不知道你在说什么
还不行吗?提示什么错误?
 
试试sql.Add('where lsnum='''+s+'''')
 
>>谢谢各位高手的赐教,首先我更正我的错误;
>>NO1:parambyname('ss').asstring:=form1.Edit2.Text ;中的'ss'应为's';
>>我按照firecar朋友的答案改拉,但不是老问题,希望大家在帮我看看好吗?

不会呀!我执行过,这样改过后不会卡在那儿了呀!
只是查询出的结果有问题,不能执行

if querybj(s1)='Ad' then//停在该句处
begin
form4.ShowModal ;
end
else if querybj(s1)='St' then
begin
form3.ShowModal ;
end
else if querybj(s1)='Te' then
begin
form3.ShowModal ;
end;
end;

 
头晕! 在线程里调用VCL要怎样呀?
 
function 里没有Sbj参数,都改为S不就通过了。
 
一段莫明其妙的代码。
你想取的sbj从哪来的?
sbj不会是个字段名吧?
哪样用fieldbyname('fieldname').asstring

 
在线程的EXECUTE里能直接访问VCL吗?你用的D6?
如果不是,用SYNCHRONIZE方法调用线程方法来访问。
 
后退
顶部