簡單的一段程序,竟然有問題!!求救!!!!!100分(100分)

  • 主题发起人 主题发起人 wtx047
  • 开始时间 开始时间
W

wtx047

Unregistered / Unconfirmed
GUEST, unregistred user!
with data.ADOQuery4 do
begin
close;
sql.Clear;
sql.Add('select 材料料號 from stuff');
sql.Add('where (材料料號='''+trim(edit2.Text) +''')');
//edit2;
//parameters.ParamByName('材料料號').Value:=trim(edit2.Text);
open;
if not data.ADOQuery4.IsEmpty then
//edit3;;
begin
close;
sql.Clear;
sql.Text:='select 材料規格 from stuff where (材料料號='''+trim(edit2.Text) +''')';
open;
if (trim(edit1.Text)<>trim(fieldbyname('材料規格').AsString))then
begin
showmessage('該料號已經存在,請重新編“材料料號”!');
edit2.Text:='';
edit2.SetFocus;
exit;
end;
end;
這段程序的目的是在edit2中輸入一個材料料號首先判斷數據庫中是否存在該料號,如果存在判斷對應的材料規格是否和edit1中輸入的規格一樣,如果不一樣就showmessage('該料號已經存在,請重新編“材料料號”!');運行的時候可以通過,但是有得時候明明材料料號對應的規格和數據庫中的一模一樣,他確showmessage('該料號已經存在,請重新編“材料料號”!');郁悶!!各位幫幫看看是哪裡有問題。
 
with data.ADOQuery4 do
begin
close;
sql.Clear;
sql.Add('select * from stuff');
sql.Add('where (材料料號='''+trim(edit2.Text) +''' and 材料規格='''+trim(edit1.Text)+''')');
//edit2;
//parameters.ParamByName('材料料號').Value:=trim(edit2.Text);
open;
if Recordcount<1 then
begin
showmessage('該料號已經存在,請重新編“材料料號”!');
edit2.Text:='';
edit2.SetFocus;
exit;
end;
end;
建議你用SQL Profiler查看運行結果,可能有的時候,中文隻會顯示一半,所以就導致查詢的結果不正確有。
 
因为相同的材料料号可能有多个规格,所以你的查询失败
 
想改下,发现你的逻辑好象也不对
应是:
1、查询是否存在相同的料号,有,则给出错误提示,并退出。没有,则进行2。
2、查询是否存在相同的材料规格,有,也给出错误提示,因为,同一个材料规格代表一个材料,和料号应是对应的。
不知我是否理解有误呢?
 
with data.ADOQuery4 do
begin
close;
sql.Clear;
sql.Add('select 材料料號 from stuff');
sql.Add('where (材料料號='''+trim(edit2.Text) +''')');
//edit2;
//parameters.ParamByName('材料料號').Value:=trim(edit2.Text);
open;
if not data.ADOQuery4.IsEmpty then
//edit3;;
begin
close;
sql.Clear;
sql.Text:='select 材料規格 from stuff where (材料料號='''+trim(edit2.Text) +''')';
open;
while not adoquery4.eof do
if (trim(edit1.Text)<>trim(fieldbyname('材料規格').AsString))then
begin
showmessage('該料號已經存在,請重新編“材料料號”!');
edit2.Text:='';
edit2.SetFocus;
exit;
end;
end;
 
謝謝各位
我自己解決了
to:SiWeiLiuLang
我的想法是
先查詢料號數據庫中是否存在
存在的話再看看數據庫中對應的規格是否和edit1中的是否相同
不相同就
showmessage
 
来蹭点分
 
来混点分。[:D]
 
后退
顶部