procedure TWebModule1.WebModule1WebActionItem6Action(Sender: TObject;
  Request: TWebRequest; Response: TWebResponse; var Handled: Boolean);
var
lbzd:string;
begin
with query3 do
  begin
  close;
  sql.Clear;
  sql.Add('select * from ztf');
  open;
  first;
     while not eof do 
     begin
     lbzd:=fieldbyname('lbzd').asstring;
     lbzd:=copy(lbzd,1,1);
     next;
     end;
end;
response.Content:=lbzd;end;为什么取不到值呀?去掉while not eof 和next之后,显示的lbzd为'B';为什么呀?数据库中的lbzd的值很多呀?'A1','A2','B1'.....我想取这些值的第一个字母!

解决方案 »

  1.   

    不要使用with... do语句!!试试================================================================
         ◆◆◆ CSDN查询助手,查询方便快捷◆◆◆ 下载地址:  
     http://CoolSlob.ifood1.com/Download/CSDNFinder.exe  
     http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]  
      

  2.   

    你的这句语句response.Content:=lbzd;在循环的外面,你当然只能得到最后的一个值.
      

  3.   

    把response.Content:=lbzd;放到循环体里面去。
      

  4.   

    不对,应该是把lbzd累加起来!!================================================================
         ◆◆◆ CSDN查询助手,查询方便快捷◆◆◆ 下载地址:  
     http://CoolSlob.ifood1.com/Download/CSDNFinder.exe  
     http://CoolSlob.8u8.com/Download/Tools/CSDNFinder.Slob[更名为.exe即可]  
      

  5.   

    var
    lbzd:string;
    ldzd_List:StringList;
    begin
    ldzd_List:=TstringList.create;
    with query3 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from ztf');
      open;
      first;
         while not eof do 
         begin
         lbzd:=fieldbyname('lbzd').asstring;
         lbzd:=copy(lbzd,1,1);
         lbzd_List.add(ldzd);//使用TstringList;
         next;
         end;
    取值的时候,使用for语句
    lbzd_List.string[i];//来取值;
       
     
      

  6.   

    不知你要的结果是什么,也可以这个
    不用TstringList;直接累加;

    申明一个累加变更:
    Add_:string;
    Add_:='';
    在While do加入
    Add_:=Add_+lbzd;
      

  7.   

    数据库中的记录如下:A,A1,A2,B,B1,B2.....,我现在想从数据库中只显示出来只有一个字母的符合条件的记录,也就是说只显示出A,B,C.....这种形式的记录,我上面的写法好象还不行,该怎么做呀?请教高手!谢谢!
      

  8.   

    '符合条件'指的是什么条件?
    要找出只有一个字母的记录:  只要判断length(fieldbyname('lbzd').asstring) = 1 就可以了.
      

  9.   

    while not eof do 
         begin
           lbzd:=fieldbyname('lbzd').asstring;
           lbzd:=copy(lbzd,1,1);
           next;
         end;
    lbzd肯定是最后一个记录的值了,前面的值你已经被替代了
      

  10.   

    var
    lbzd:string;
    begin
    with query3 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from ztf where length(lbzd)=1');
      open;
      first;
         while not eof do 
         begin
         mystr:=fieldbyname('lbzd').asstring;
         response.Content:=mystr;
         next;
         end;
    end;
    end;   这样子也不对呀?SQL语句出错了吧!请高手指点!怎样才是正确的写法
      

  11.   

    while not eof and bof do
    begin]
      .
      .
      .
    end
      

  12.   

    sql语句应该没错,看你用的数据库了,同意 careerist() 的说法.
      

  13.   

    如果是sql6.5时语句会出错,不妨试试这个Sql
    select * from ztf where charindex('@',lbzd+'@')=1
      

  14.   

    var
    lbzd:string;
    str:TStringList;
    begin
    str:=TStringList.create();
    with query3 do
      begin
      close;
      sql.Clear;
      sql.Add('select * from ztf where len(lbzd)=1');
      //没有length这个函数
      open;
      first;
         while not eof do 
         begin
         mystr:=fieldbyname('lbzd').asstring;
         //response.Content:=mystr;//这里当然错了
         lbzd_List.add(ldzd);
         next;
         end;
    end;
    end;
      

  15.   

    补充:
    Access中使用len
    sqlserver中使用length
      

  16.   

    SELECT SUBSTRING(字段名, 0, 2) AS b FROM 数据库 WHERE 字段名 LIKE '符合条件%'
    肯定可以给分
      

  17.   

    把while not query1.eof do 从with query1 do 中拿出来,不要放在with里面