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

SqlMemTable的中文查詢問題~~

缺席
yeye
一般會員


發表:7
回覆:5
積分:2
註冊:2006-11-18

發送簡訊給我
#1 引用回覆 回覆 發表時間:2008-10-29 16:53:56 IP:220.130.xxx.xxx 未訂閱
我是用SqlMemTable元件,預先將server的某資料表,

使用AdoDataSet抓下來,再把值塞進去程式中的MemTable中,

放在電腦的記憶體中,供使用者查詢、更新,

但是MemTable的中文支援怪怪的,像我用模糊查詢,

明明條件下的是「i」,卻會找出有含「哈」的資料。

打「哈」查詢,卻會抓出一堆名稱中沒有「哈」的資料…

我有上網查了一下,有人說需要把MemTable中的欄位屬性改為:ftWideString

可是,資料似乎在從DataSet -> MemTable就出問題了,值寫不進去…

那欄位在SQL Server中是設為String,

請問各位前輩,有辦法將值做轉換嗎?或是該怎麼去設定SqlMemTable?

yeye
一般會員


發表:7
回覆:5
積分:2
註冊:2006-11-18

發送簡訊給我
#2 引用回覆 回覆 發表時間:2008-10-29 18:16:16 IP:220.130.xxx.xxx 未訂閱
這元件先用AdoDataSet讀取資料庫取值,再塞進SQLMemTable中,

使用SQLMemQuery下語法,用DataSource去指向SQLMemQuery,

這元件有兩個要注意的地方是,在下sql 查詢時,A和a是不一樣的,

我的作法是在轉存至MemTable時,就全部改為小寫的…

另一個就是中文字查詢的問題,後來我把FieldDefs中,我查詢會用到的Fields

資料型態設為fsWideString,下面的size也要設,它不會自己跑~~

預設為0…沒有改就不會有值寫進去...一開始也沒注意到這裡。

在把資料轉存到MemTable時,下widestring指令…

下面是在資料轉存時,我的寫法並不高級,有需要的人就參考參考吧。

//建立Book的MemTable
DM.BookDataSet.Close;
DM.BookDataSet.CommandText := 'Select * from Book';
DM.BookDataSet.Open;
DM.MemBookTbl.Close;
DM.MemBookTbl.CreateTable;
DM.MemBookTbl.Open;
While not DM.BookDataSet.Eof do
begin
DM.MemBookTbl.Insert;
DM.MemBookTbl.FieldByName('ISBN').AsString := DM.BookDataSet.Fields.Fields[0].AsString;
DM.MemBookTbl.FieldByName('Name').AsString := widestring(AnsiLowerCase(DM.BookDataSet.Fields.Fields[1].AsString));
DM.MemBookTbl.FieldByName('Author').AsString := DM.BookDataSet.Fields.Fields[2].AsString;
DM.MemBookTbl.FieldByName('PublisherID').AsString := DM.BookDataSet.Fields.Fields[3].AsString;
DM.MemBookTbl.FieldByName('KindID').AsString := DM.BookDataSet.Fields.Fields[4].AsString;
DM.MemBookTbl.FieldByName('Price').AsString := DM.BookDataSet.Fields.Fields[5].AsString;
DM.MemBookTbl.FieldByName('SellPrice').AsString := DM.BookDataSet.Fields.Fields[6].AsString;
DM.MemBookTbl.FieldByName('Stock').AsString := DM.BookDataSet.Fields.Fields[7].AsString;
DM.MemBookTbl.FieldByName('CreateDate').AsString := DM.BookDataSet.Fields.Fields[8].AsString;
DM.MemBookTbl.FieldByName('UpDate').AsString := DM.BookDataSet.Fields.Fields[9].AsString;
DM.MemBookTbl.FieldByName('User').AsString := DM.BookDataSet.Fields.Fields[10].AsString;
DM.MemBookTbl.Post;
Dm.BookDataSet.Next;
end;
DM.MemBookSql.Close;
DM.MemBookSql.SQL.Clear;
DM.MemBookSql.SQL.Add('Select ISBN ,Name as 書名,Author as 作者 from Books');
DM.MemBookSql.Open;
編輯記錄
yeye 重新編輯於 2008-10-30 14:03:08, 註解 無‧
系統時間:2024-04-26 12:20:12
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!