为什么在MSSQL2000里不能遍历数据表?(50分)

  • 主题发起人 主题发起人 ifipig
  • 开始时间 开始时间
I

ifipig

Unregistered / Unconfirmed
GUEST, unregistred user!
with DataFm.ADOQueryBook do<br>&nbsp; begin<br>&nbsp; &nbsp; close;<br>&nbsp; &nbsp; sql.Clear;<br>&nbsp; &nbsp; sql.Add('select 客房编号 from 客房信息 where 状态=''空房'' and 类型编号=(select 类型编号 from 客房类型 where 类型名称=:vlxmc)');<br>&nbsp; &nbsp; Parameters.ParamByName('vlxmc').Value:=trim(roomtypebox.Text);<br>&nbsp; &nbsp; ExecSQL;<br>&nbsp; &nbsp; open;<br>&nbsp; &nbsp; First;<br>&nbsp; &nbsp; while not Eof do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; roomnumbox.Items.Add(fieldbyname('客房编号').AsString);<br>&nbsp; &nbsp; &nbsp; next;<br>&nbsp; &nbsp; end;<br>&nbsp; end;<br><br>帮俺看看这段代码 &nbsp;为啥 &nbsp;我使用了 first &nbsp;但是 他还是不进下面那个while 循环啊 ?<br><br>在access里就可以 &nbsp;放到mssql 就不行 &nbsp; <br><br>很郁闷 &nbsp;帮我看下啊 &nbsp;谢谢了
 
把 execsql 去掉
 
去了 也是不管用 <br>以前就是没有加
 
类型编号= 改为 <br>类型编号 in
 
确定记录数&gt;0 &nbsp;?
 
[:(] &nbsp;还是不行 &nbsp;我跟了下程序 &nbsp;到那就跳出了...<br><br>郁闷啊<br><br>谢谢你
 
记录数是&gt;0 &nbsp;<br><br>access就可以读出来
 
如果把 and后面的和Parameters.ParamByName('vlxmc').Value:=trim(roomtypebox.Text);<br>去掉 &nbsp;就能显示出来
 
aodconnection的CursorLocation设的什么?
 
我把 while not eof do 改称 while eof do<br><br>就进入死循环了 &nbsp;说明他一直指向最后一条啊
 
CursorLocation 设的 clUseClient &nbsp;整个程序 只用了一个adoconnection
 
eof代表数据集尾,是最后一条记录的下一个位置,进入死循环说明查询根本就没有返回记录,还是好好看看SQL语句吧,估计问题出在SQL上。
 
1.去掉ExecSQL<br>2.类型编号= 改为 <br>&nbsp;类型编号 in<br>3.Parameters.ParamByName('vlxmc').Value:=trim(roomtypebox.Text);<br>&nbsp;改为<br>Parameters.ParamByName('vlxmc').AsString:=trim(roomtypebox.Text);<br>4.将SQL语句拿出来去查询分析器里边测试一下,看是否有符合要求的数据
 
value 好像不能改成asstring <br><br>查询分析器测试有符合要求的结果。。。。<br><br>郁闷死了阿
 
with DataFm.ADOQueryBook do<br>&nbsp; begin<br>&nbsp; &nbsp; close;<br>&nbsp; &nbsp; sql.Clear;<br>&nbsp; &nbsp; sql.Add('select 客房编号 from 客房信息 where 状态='+#39+'空房'+#39+' and 类型编号 in (select 类型编号 from 客房类型 where 类型名称='+#39+trim(roomtypebox.Text)+#39+')');<br>&nbsp; &nbsp; open;<br>&nbsp; &nbsp; First;<br>&nbsp; &nbsp; while not Eof do<br>&nbsp; &nbsp; begin<br>&nbsp; &nbsp; &nbsp; roomnumbox.Items.Add(fieldbyname('客房编号').AsString);<br>&nbsp; &nbsp; &nbsp; next;<br>&nbsp; &nbsp; end;<br>&nbsp; end;
 
xuhongxinghome 谢谢您 &nbsp;解决了~!
 
1。最好不要这样写,可以将 select 客房编号 from 客房信息 where 状态=:para1 and 类型编号 in (select 类型编号 from 客房类型 where 类型名称=:para2) 直接写在 SQL 属性中<br>然后 <br>Parameters.ParamByName('PARA1').Value:='空房' ;<br>Parameters.ParamByName('PARA1').Value:=trim(roomtypebox.Text);
 
后退
顶部