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

delphi7 讀取mysql其中一個table 再新增到sqlite裡面

答題得分者是:tuga
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#1 引用回覆 回覆 發表時間:2014-12-07 00:38:43 IP:59.115.xxx.xxx 訂閱
各位先進大大好
請問delphi7 讀取mysql其中一個table 再新增到sqlite裡面怎麼寫呢?!
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#2 引用回覆 回覆 發表時間:2014-12-07 14:07:59 IP:118.169.xxx.xxx 訂閱
while .not. taMysql.eof do
begin
taSqlLite.Append;
taSqlLite.FieldByName('f1').Value := taMysql.FieldByName('f1').Value ;
.
.
.
taSqlLite.Post;

taMySql.Next;
end;
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#3 引用回覆 回覆 發表時間:2014-12-17 23:04:37 IP:61.70.xxx.xxx 訂閱
不好意思,最近在寫的時候又發生問題

[code delphi]
sSQL := 'CREATE TABLE huccsqlite ([stockid] varchar(15) PRIMARY KEY,[international_barcode] VARCHAR(45),';
sSQL := sSQL '[stock_description] VARCHAR(50), [use_units] varchar(20),[is_flex] tinyint(1),[mbflag] char(1),';
sSQL := sSQL '[small_cat_categorydescription] varchar(10), [middle_cat_categorydescription] varchar(10),[large_cat_cat_categorydescription] varchar(10),';
sSQL := sSQL '[ou1_stockcategory_name] varchar(50), [suppname] varchar(26),[price] decimal(20,4));';
//sSQL := sSQL 'COLLATE NOCASE);';
sldb.execsql(sSQL);
sldb.execsql('CREATE INDEX TestTableName ON [huccsqlite]([stockid]);');

[/code]

以上是我用delhpi sqlite 要創出來的資料庫
當我使用您的語法的時候會出現
"could not convert variant of type (UnicodeString) into type (Double)"
或者"could not convert variant of type (null) into type (olestr)"
請問該怎麼解決呢??
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#4 引用回覆 回覆 發表時間:2014-12-18 08:08:13 IP:1.34.xxx.xxx 訂閱
taSqlLite.FieldByName('f1').Value := taMysql.FieldByName('f1').Value ;

A1 你建立在 sqlLite 跟 mySql 的 F1 的 data type 是不一樣的,
ex F1 是 string, 在 sqlLite, mySql 必須都是 string

或是你必須指定明確的型態
taSqlLite.FieldByName('f1').AsString := taMysql.FieldByName('f1').AsString ;
或是
taSqlLite.FieldByName('f1').AsInteger := StrToInt(taMysql.FieldByName('f1').AsString) ;

如果考慮 WideString , 試看看
taSqlLite.FieldByName('f1').AsWideString := taMysql.FieldByName('f1').AsString ;


a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#5 引用回覆 回覆 發表時間:2014-12-19 23:44:28 IP:1.169.xxx.xxx 訂閱
不好意思大大,在請問一下access violation at address in module read of address 是什麼錯誤???
編輯記錄
a9907087 重新編輯於 2014-12-20 00:16:14, 註解 無‧
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#6 引用回覆 回覆 發表時間:2014-12-20 00:55:11 IP:1.169.xxx.xxx 訂閱
不好意思大大,在請問一下not an integer or numeric field是什麼錯誤???
[code delphi]
ClientDataSet1.FieldByName('ListPrice').AsString := floattostr( sltb.FieldAsDouble(sltb.FieldIndex['price']));
[/code]
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#7 引用回覆 回覆 發表時間:2014-12-20 11:32:51 IP:1.34.xxx.xxx 訂閱
您用了尚未被 Create 的 object

var
st : TStringList ;
begin
ShowMessage(st.Count) ;
end;

因為 st 尚未被 Create 所以用了就會出現錯誤訊息,
使用 object 之前必須先 Create, 如下

var
st : TStringList ;
begin
st := TStringList.Create;
ShowMessage(st.Count) ;
end;



===================引 用 a9907087 文 章===================
不好意思大大,在請問一下access violation at address in module read of address 是什麼錯誤???
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#8 引用回覆 回覆 發表時間:2014-12-20 11:41:22 IP:1.34.xxx.xxx 訂閱
如果是我寫, 會如下

ClientDataSet1.FieldByName('ListPrice').AsString := floattostr( sltb.FieldByName('price').AsDouble)

你的 ListPrice 如果是數值欄位 可以如下
try
ClientDataSet1.FieldByName('ListPrice').AsDouble := sltb.FieldByName('price').AsDouble ;
except
// 這邊可以寫 log 紀錄那些發生問題
// ListPrice 設為 0 也是有風險的, 依照您的情況做處理吧
ClientDataSet1.FieldByName('ListPrice').AsDouble := 0 ;
end;






===================引 用 a9907087 文 章===================
不好意思大大,在請問一下not an integer or numeric field是什麼錯誤???
[code delphi]
ClientDataSet1.FieldByName('ListPrice').AsString := floattostr( sltb.FieldAsDouble(sltb.FieldIndex['price']));
[/code]
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#9 引用回覆 回覆 發表時間:2014-12-20 13:20:54 IP:1.169.xxx.xxx 訂閱
謝謝各位的回答,我在dbGrid做了一個項次的欄位
現在每案一次按鈕資料就會在最上面增加,會讓我的項次變成54321
可是我想要的是12345,請問要怎麼改??

我有一個edit,想要用按下enter以後才執行我的後台的程式
編輯記錄
a9907087 重新編輯於 2014-12-20 14:12:24, 註解 無‧
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#10 引用回覆 回覆 發表時間:2014-12-20 17:41:39 IP:118.169.xxx.xxx 訂閱
1
BeforeInsert 時把 qyTemp.Last
2
在 EditBox 的 On-Key-Press
if key = #13 then
begin
.....................................
end

===================引 用 a9907087 文 章===================
謝謝各位的回答,我在dbGrid做了一個項次的欄位
現在每案一次按鈕資料就會在最上面增加,會讓我的項次變成54321
可是我想要的是12345,請問要怎麼改??

我有一個edit,想要用按下enter以後才執行我的後台的程式
編輯記錄
tuga 重新編輯於 2014-12-20 17:45:36, 註解 無‧
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#11 引用回覆 回覆 發表時間:2014-12-20 19:50:13 IP:1.169.xxx.xxx 訂閱
不好意思,剛剛又遇到dbGrid選取以後案刪除鈕就刪除該項被選取的資料
該如何做呢??
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#12 引用回覆 回覆 發表時間:2014-12-20 21:19:22 IP:118.169.xxx.xxx 訂閱
本來就是該選那個就刪那個
===================引 用 a9907087 文 章===================
不好意思,剛剛又遇到dbGrid選取以後案刪除鈕就刪除該項被選取的資料
該如何做呢??
a9907087
一般會員


發表:3
回覆:6
積分:1
註冊:2014-12-06

發送簡訊給我
#13 引用回覆 回覆 發表時間:2014-12-21 20:03:22 IP:1.169.xxx.xxx 訂閱
不用寫任何語法嗎??
是刪除dbGird裡面選取的那一行
我有一個刪除的button按下去 就刪除畫面上dbGird那一行
我的想法應該要寫些什麼。
tuga
高階會員


發表:16
回覆:105
積分:104
註冊:2002-07-13

發送簡訊給我
#14 引用回覆 回覆 發表時間:2014-12-22 09:00:54 IP:1.34.xxx.xxx 訂閱
qyTemp.Delete;

===================引 用 a9907087 文 章===================
不用寫任何語法嗎??
是刪除dbGird裡面選取的那一行
我有一個刪除的button按下去 就刪除畫面上dbGird那一行
我的想法應該要寫些什麼。
系統時間:2017-10-17 21:12:30
聯絡我們 | Delphi K.Top討論版
本站聲明
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。
2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。
3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇!