全國最多中醫師線上諮詢網站-台灣中醫網
發文 回覆 瀏覽次數:1871
推到 Plurk!
推到 Facebook!

query查询出错

尚未結案
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#1 引用回覆 回覆 發表時間:2005-05-26 18:33:44 IP:137.132.xxx.xxx 未訂閱
我在用query查询的时候遇到问题, 有些字段可以查,有些字段不可以查出。 不知道为什么?那位大大能帮忙看一下吗?    ps: 我感觉是不是lunwen.dbf这个数据库中LWTW字段太长了,可是用database desktop 里的SQL editor,并RUn却是可以的。    下面是我的代码,另外附上我的project,见 http://delphi.ktop.com.tw/topic.php?TOPIC_ID=71876  
 
//---------------------------------------------------------------------------    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString strFile;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  OpenDialog1->InitialDir=ExtractFilePath(Application->ExeName);
  OpenDialog1->Filter = "DBF File(*.dbf)|*.dbf";      if(OpenDialog1->Execute())
  {
   if(TableMain->Active)
        TableMain->Close();       TableMain->TableName=OpenDialog1->FileName;
   strFile=ExtractFileName(TableMain->TableName);
   strFile=ChangeFileExt(strFile,"");
   Caption=strFile;
   
   TableMain->Open();
   TableMain->Active=true;       DataMain->DataSet=TableMain;
   DBGrid1->DataSource=DataMain;
   }
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button2Click(TObject *Sender)
{
      QueryPaper->Close();
      QueryPaper->SQL->Clear();
      QueryPaper->SQL->Add("Select LWCJ From " strFile);
      //问题在这里,当我换成下面句子就不能运行
      //QueryPaper->SQL->Add("Select * From " strFile);
      QueryPaper->Open();
      QueryPaper->Active=true;          DataMain->DataSet=QueryPaper;
      DBGrid1->DataSource=DataMain;
}
//---------------------------------------------------------------------------
發表人 - zhvickie 於 2005/05/26 18:37:53 發表人 - zhvickie 於 2005/05/26 20:29:10
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#2 引用回覆 回覆 發表時間:2005-06-04 10:16:05 IP:137.132.xxx.xxx 未訂閱
没有人回答。 再顶一下,希望大大们能看到
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#3 引用回覆 回覆 發表時間:2005-06-05 17:48:39 IP:221.169.xxx.xxx 未訂閱
zhvickie:我加一個TDatabase
LoginPrompt:false;
AliasName:dBASE Files
DatabaseName:aaa (這是我隨便訂)
QueryPaper的DatabaseName=aaa
    
BCB6測試OK!
Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#4 引用回覆 回覆 發表時間:2005-06-06 10:33:58 IP:137.132.xxx.xxx 未訂閱
谢谢,运行是可以运行 为什么查询结果字体显示有问题? open dbf文件的时候dbgrid显示还没有问题。 查询结果是有中文的地方是乱码 發表人 - zhvickie 於 2005/06/06 10:37:19
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#5 引用回覆 回覆 發表時間:2005-06-06 11:03:58 IP:221.169.xxx.xxx 未訂閱
引言: 谢谢,运行是可以运行 为什么查询结果字体显示有问题? open dbf文件的时候dbgrid显示还没有问题。 查询结果是有中文的地方是乱码 發表人 - zhvickie 於 2005/06/06 10:37:19
將你的Form1的Font設為"宋體" 請參考! Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#6 引用回覆 回覆 發表時間:2005-06-06 13:37:26 IP:137.132.xxx.xxx 未訂閱
结果一样,还是不行。 再次感谢你的热心帮助。
ShinaaShu
一般會員


發表:1
回覆:10
積分:2
註冊:2004-01-19

發送簡訊給我
#7 引用回覆 回覆 發表時間:2005-06-06 17:02:17 IP:220.130.xxx.xxx 未訂閱
void __fastcall TForm1::Button2Click(TObject *Sender) {       String sSQL;  //Add this line       sSQL = "Select LWCJ From "+strFile+" "; //Add this line       QueryPaper->Close();       QueryPaper->SQL->Clear();       //QueryPaper->SQL->Add("Select LWCJ From "+strFile);       QueryPaper->SQL->Add(sSQL); //Add this line       QueryPaper->Open();       QueryPaper->Active=true;          DataMain->DataSet=QueryPaper;       DBGrid1->DataSource=DataMain; } //-------------------------------------------------------------------
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#8 引用回覆 回覆 發表時間:2005-06-06 18:16:02 IP:137.132.xxx.xxx 未訂閱
楼上的跟我的没有区别, 估计是问题没有看清楚, 问题是下面这句不能执行。 QueryPaper->SQL->Add("Select * From " strFile);
ShinaaShu
一般會員


發表:1
回覆:10
積分:2
註冊:2004-01-19

發送簡訊給我
#9 引用回覆 回覆 發表時間:2005-06-06 21:28:52 IP:60.244.xxx.xxx 未訂閱
void __fastcall TForm1::Button2Click(TObject *Sender) { String sSQL; //加入此行 sSQL = "Select LWCJ From "+strFile+" "; //加入此行 QueryPaper->Close(); QueryPaper->SQL->Clear(); QueryPaper->SQL->Add(sSQL); //加入此行 QueryPaper->Open(); QueryPaper->Active=true;    DataMain->DataSet=QueryPaper; DBGrid1->DataSource=DataMain; }    
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#10 引用回覆 回覆 發表時間:2005-06-07 10:06:26 IP:137.132.xxx.xxx 未訂閱
真受不了楼上的。 你加的那些语句有跟我的有什么区别。 我主要是LWTM字段不能用select选出来。 LWCJ本来就可以。
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#11 引用回覆 回覆 發表時間:2005-06-07 14:26:37 IP:221.169.xxx.xxx 未訂閱
引言: 结果一样,还是不行。 再次感谢你的热心帮助。
zhvickie:我沒有你的程式,但我想: 谢谢,运行是可以运行 为什么查询结果字体显示有问题? open dbf文件的时候dbgrid显示还没有问题。 查询结果是有中文的地方是乱码 應該跟你的設定有關! Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#12 引用回覆 回覆 發表時間:2005-06-07 14:55:58 IP:137.132.xxx.xxx 未訂閱
程序在http://delphi.ktop.com.tw/topic.php?TOPIC_ID=71876 可以下载。 请您帮忙看一下。
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#13 引用回覆 回覆 發表時間:2005-06-07 18:13:24 IP:221.169.xxx.xxx 未訂閱
zhvickie:先聲明我使用繁體中文視窗。
欄位:TableMain->FieldByName("LWTM")->AsString;
顯示簡體中文,我切換至簡體中文是可以看到!
使用繁簡轉換也沒問題
TableMain->FieldByName("LWTM")->AsString="水產養殖研究"
你的視窗語系是?
請參考!
Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#14 引用回覆 回覆 發表時間:2005-06-07 19:06:35 IP:137.132.xxx.xxx 未訂閱
谢谢andychang1690. 我想你还没有清楚我的问题。
TableMain->FieldByName("LWTM")->AsString;
没有错,是对的,也没有乱码。我再把重点部分程序标出来。
    void __fastcall TForm1::Button2Click(TObject *Sender)
{
      QueryPaper->Close();
      QueryPaper->SQL->Clear();
      QueryPaper->SQL->Add("Select LWCJ From " strFile);
      
      //上面这句话,结果显示是没有错的。另外说一下,我给的
      //程序代码也是没有错的。          //我在这里只是想问,当我的程序中
      //这一行改成下面句子就不能运行
      //QueryPaper->SQL->Add("Select * From " strFile);
       
      QueryPaper->Open();
      QueryPaper->Active=true;          DataMain->DataSet=QueryPaper;
      DBGrid1->DataSource=DataMain;
}
我的问题是 “query查询出错 ”!!!! 注意,我是在查询啊。我知道tablemain结果没有错。 我是要查这个表啊。。。。。 我要知道为什么用TQuery这么简单查询出错。 什么解决呢。我要去查询表,不是显示表。 为什么QueryMain->FieldByName("LWTM")->AsString 的结果是乱码? 另外我的系统是英文的winxp,可以显示中文。 这个都没有问题。 其实我说了,我open的时候, dbgrid里面中文都显示的好好的,没有乱码。 然后要去查询的时候,如果按照你说的方法, 查询结果是乱码。 發表人 - zhvickie 於 2005/06/07 19:27:04
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#15 引用回覆 回覆 發表時間:2005-06-07 22:43:04 IP:221.169.xxx.xxx 未訂閱
zhvickie:我實在搞不清楚你的問題?! 我將我執行結果Post上來: 上面為我的繁體中文系統顯示,下面為轉簡體中文顯示, 希望你的問題能讓我明白些! 研究研究! Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#16 引用回覆 回覆 發表時間:2005-06-08 10:08:46 IP:137.132.xxx.xxx 未訂閱
多谢andy 我的问题,就是打开的时候dbgrid是对的。 后来用你的方法,查询结果显示在dbgrid中是错误的(乱码)。 但是好奇怪,在你的画面中好像可能对的。 我的系统是英文的winxp。我就是弄不清楚, 打开的时候dbgrid什么问题都没有,也是显示的简体字。 但是用query查询后,显示在dbgrid中缺是乱码。 能不能把你的修改后的project传上来。我看看。 anyway,谢谢您多日的帮忙。 我把我修改后的code也放上。
    #include 
#pragma hdrstop    #include "Unit1.h"
//---------------------------------------------------------------------------
#pragma package(smart_init)
#pragma resource "*.dfm"
TForm1 *Form1;
AnsiString strFile;
//---------------------------------------------------------------------------
__fastcall TForm1::TForm1(TComponent* Owner)
        : TForm(Owner)
{
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button1Click(TObject *Sender)
{
  OpenDialog1->InitialDir=ExtractFilePath(Application->ExeName);
  OpenDialog1->Filter = "DBF File(*.dbf)|*.dbf";      if(OpenDialog1->Execute())
  {
   if(TableMain->Active)
        TableMain->Close();
   //if(Database1->Connected==false)
   //  Database1->Connected= true;       TableMain->TableName=OpenDialog1->FileName;
   strFile=ExtractFileName(TableMain->TableName);
   strFile=ChangeFileExt(strFile,"");
   Caption=strFile;
   
   TableMain->Open();
   TableMain->Active=true;       DataMain->DataSet=TableMain;
   DBGrid1->DataSource=DataMain;
   }
}
//---------------------------------------------------------------------------    void __fastcall TForm1::Button2Click(TObject *Sender)
{
      QueryPaper->Close();
      QueryPaper->SQL->Clear();
      QueryPaper->SQL->Add("Select * From "+strFile);
      QueryPaper->Open();
      QueryPaper->Active=true;          DataMain->DataSet=QueryPaper;
      DBGrid1->DataSource=DataMain;
}
//---------------------------------------------------------------------------
void __fastcall TForm1::FormCreate(TObject *Sender)
{
     
     //下面是添加的代码,其他部分都与原来一样,没有改变
     Database1->LoginPrompt=false;
     Database1->AliasName="dBASE Files";
     Database1->DatabaseName="aaa" ;
     QueryPaper->DatabaseName="aaa";
     
}
發表人 - zhvickie 於 2005/06/08 10:22:24 發表人 - zhvickie 於 2005/06/08 10:35:41
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#17 引用回覆 回覆 發表時間:2005-06-08 10:49:28 IP:221.169.xxx.xxx 未訂閱
Zhvickie: 下載檔案: http://delphi.ktop.com.tw/loadfile.php?TOPICID=22763564&CC=509096 我因為測試有異動你部分程式: 按下OpenDbf File的Button後你必須按下Query的Button以SQL方式開啟; Table的Button以Table方式開啟。 會顯示繁簡體對照加入一個cvcode.zip http://delphi.ktop.com.tw/topic.php?topic_id=4239 檔案名稱:cvcode.zip 版 本:1.01 原始程式:有(Source) 適用版本:(D2) (D3) 版權種類:免費軟體(FreeWare) 內容說明: 大陸國標碼 GB碼 與台, 港, 澳的 BIG-5 碼轉換單元 請參考! Andy Chang
------
Andy Chang
zhvickie
一般會員


發表:16
回覆:41
積分:11
註冊:2003-05-11

發送簡訊給我
#18 引用回覆 回覆 發表時間:2005-06-08 12:29:01 IP:137.132.xxx.xxx 未訂閱
奇怪,你的project在我的机器上 编译还是那样。还是乱码。 我的系统是英文的winxp,只要把里面的亚洲 字体装上就可以显示中文了。 没有理由是简体和繁体的原因。 估计是bcb自己的问题吧。 因为dbgrid用table打开的时候是可以的。 一查询结果显示出来是乱码,不是繁体的东西. 实际上我换成别的dbf文件就没有这个问题。 而且不用你说的添加tdatabase控件, 因此我很奇怪。我感觉是不是query控件有字段 长度的限制?有没有别的控件来代替它来查询。 發表人 - zhvickie 於 2005/06/08 12:32:45
andychang1690
資深會員


發表:20
回覆:694
積分:442
註冊:2003-03-14

發送簡訊給我
#19 引用回覆 回覆 發表時間:2005-06-08 17:23:52 IP:221.169.xxx.xxx 未訂閱
引言: 奇怪,你的project在我的机器上 编译还是那样。还是乱码。 我的系统是英文的winxp,只要把里面的亚洲 字体装上就可以显示中文了。 没有理由是简体和繁体的原因。 估计是bcb自己的问题吧。 因为dbgrid用table打开的时候是可以的。 一查询结果显示出来是乱码,不是繁体的东西. 实际上我换成别的dbf文件就没有这个问题。 而且不用你说的添加tdatabase控件, 因此我很奇怪。我感觉是不是query控件有字段 长度的限制?有没有别的控件来代替它来查询。 發表人 - zhvickie 於 2005/06/08 12:32:45
是很奇怪;但因為我並沒有你的配備,我無法斷言一些事。 你可嚐試使用ADO或將程式放置存中文Win上測試(不論繁簡體) 或將Table改成Access也可以。 請參考! Andy Chang
------
Andy Chang
系統時間:2024-05-04 5:43:40
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!