我做了一个简单的学生宿舍管理系统,用delphi自带的database desktop设计了一个paradox表
表的各个域的type都是Alpha。查询表的时候,当查询的域的值为汉字的时候,就出错,而数字却可以运行。错误提示为:project1.exe raised exception class EDatabaseError with message'table1:field'张三'not found'.
下面是查询过程的代码?:
procedure TForm3.Button1Click(Sender: TObject);
begin
  table1.Refresh;
  with table1 do
  try
    disablecontrols;
    filtered:=false;
    memo1.Text:=memo1.Text+edit1.Text;
    filter:=memo1.Text;
    filtered:=true;
  finally
    enablecontrols;
    if table1.RecordCount=0 then
      begin
        messagebeep(1);
        showmessage('ûÓзûºÏÌõ¼þµÄ¼Ç¼£¬ÇëÈ·ÈÏÌõ¼þ»ò·ÅÆú²éѯ!') ;
        if messagedlg('ÊÇ·ñ¼ÌÐø²éѯ£¿½áÊø²éѯ²ÅÄܽøÐÐÆäËû²Ù×÷!',mtinformation,[mbyes,mbno],0)=mrno then
          begin
            filtered:=false;
            table1.Close;
            table1.Open;
          end;
      end
    else
      begin
        if  messagedlg('ÊÇ·ñ¼ÌÐø²éѯ£¿½áÊø²éѯ²ÅÄܽøÐÐÆäËû²Ù×÷!',mtinformation,[mbyes,mbno],0)=mrno then
          begin
            filtered:=false;
            table1.Close;
            table1.Open;
          end;
      end;
    end;end;
还有一个问题:就是我做了个登陆界面,在Timage对象上放了一个Tlable对象和三个Tbutton对象,怎么样才能让Tlable和Tbutton对象的位置随着主窗口的缩放自动移动,保持和各个边界的比例不变?
很菜的问题:)

解决方案 »

  1.   

    不好意思,在上面的showmessage和messagedlg中的乱码是一段汉字:)
    procedure TForm3.Button1Click(Sender: TObject);
    begin
      table1.Refresh;
      with table1 do
      try
        disablecontrols;
        filtered:=false;
        memo1.Text:=memo1.Text+edit1.Text;
        filter:=memo1.Text;
        filtered:=true;
      finally
        enablecontrols;
        if table1.RecordCount=0 then
          begin
            messagebeep(1);
            showmessage('没有符合条件的记录,请确认条件或放弃查询!') ;
            if messagedlg('是否结束查询?结束查询才能进行其他操作!',mtinformation,[mbyes,mbno],0)=mrno then
              begin
                filtered:=false;
                table1.Close;
                table1.Open;
              end;
          end
        else
          begin
            if  messagedlg('是否结束查询?结束查询才能进行其他操作!',mtinformation,[mbyes,mbno],0)=mrno then
              begin
                filtered:=false;
                table1.Close;
                table1.Open;
              end;
          end;
        end;end;
      

  2.   

    filter:=memo1.Text;
    应该是你的memo1.Text内容不对
      

  3.   

    谢谢石头:)
    我单步调试的时候,watch memo1.Text的值,在执行完memo1.Text:=memo1.Text+edit1.Text;时,它的内容是对的,但下一步filter:=memo1.Text;执行的时候,就报错。
      

  4.   

    project1.exe raised exception class EDatabaseError with message'table1:field'张三'not found'.
      

  5.   

    不是让你帖出错的提示。
    是帖出你的firlter的内容。
    感觉就是你的filter内容写错了。
      

  6.   

    哦,谢谢sir chen
    那为什么我运行时,查询的字段的值为汉字时,就报错呢?
      

  7.   

    不如把Memo.text的格式转化,看看结果
      

  8.   

    to:whbo
    谢谢
    把Memo.text的格式转化?怎么转化呢,还请指点啊,我是新手,不太懂啊。
      

  9.   

    messagedlg中的乱码是一段乱码 
    filter属性的格式可能出错