用sql新增 |
尚未結案
|
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
wyndog
資深會員 發表:7 回覆:362 積分:348 註冊:2004-10-12 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 改成如下試試﹕
procedure TForm2.BitBtn1Click(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select * From PDLB'); //SQL語法中有錯誤﹐修正如上 Query1.Open; //使用無回傳值的SQL語法時﹐要用Open方法來開啟 //ExecSQL是用于無回傳值的SQL語法﹐如Insert, Delete, Update等 //當下達ExecSQL方法后資料集元件會被關閉(即Active屬性值為False) Query1.Insert; Query1.Fields.FieldByName('欄位名稱1').Value := 值 //此處在進入Insert狀態后﹐需要指定各欄位的值 //略﹒﹒﹒同上 Query1.Post; end;最后還有一點﹐使用Query元件時﹐如果需要對資料庫進行異動﹐必須先將RequestLive屬性值設為True才可﹒ ================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 在Query1.Post;這句出錯的可能性大都是因為資料集未進入修改或新增狀態﹐賦欄位值錯誤這兩個原因﹒您的問題中﹐Query1已經處于新增狀態﹐所以應不會是第一個原因﹐在每筆資料Post之前﹐總要把每個欄位的值先告訴給資料集元件吧﹐如果沒有賦值給對應的欄位﹐如果資料表架構中該欄位是不允許空白的﹐那在Post的時候就會出錯了﹒假設說您的三個欄位﹐IDNO﹐Name﹐Age﹐IDNO和Name是字串形態﹐Age是整數形態﹐您可在Post之前寫成如下﹕
procedure TForm2.BitBtn1Click(Sender: TObject); begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Add('select * From PDLB'); Query1.Open; Query1.Insert; Query1.Fields.FieldByName('IDNO').Value := '0001'; Query1.Fields.FieldByName('Name').Value := 'Xinsheng' Query1.Fields.FieldByName('Age').Value := 26 Query1.Post; end;================================= 有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗ ================================
------
忻晟 |
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
cashxin2002你好:
是這樣的,我將你上述的程式碼改了一點點地方…如下
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * From PDLB');
Query1.Open;
Query1.Insert;
Query1.Fields.FieldByName('LBPDID').Value := DBEdit1.Text;
Query1.Fields.FieldByName('LBPRTY').Value := DBEdit2.Text;
Query1.Fields.FieldByName('LBMARKN').Value := DBEdit3.Text;
Query1.Post; 看起來並沒有什麼錯誤…但卻出現在這一個錯誤視窗…
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
|
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ 欄位形態和您輸入的值形態不匹配﹐程式碼貼上來看看﹒
如欄位為整數形態﹐需要﹕
Query1.Fields.FieldByName('Age').Value := StrToInt(DBEdit1.Text);
如欄位為實數形態﹐需要﹕
Query1.Fields.FieldByName('Money').Value := StrToFloat(DBEdit2.Text);
如欄位為日期形態﹐需要﹕
Query1.Fields.FieldByName('Date').Value := StrToDate(DBEdit3.Text); 您需要确定都有賦值給每個欄位﹒ =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * From PDLB');
Query1.Open;
Query1.Insert;
Query1.Fields.FieldByName('LBPDID').Value :=DBEdit1.Text;
Query1.Fields.FieldByName('LBPRTY').Value :=DBEdit2.Text;
Query1.Fields.FieldByName('LBMARKN').Value := DBEdit3.Text;
Query1.Fields.FieldByName('LBMARKC').Value := DBEdit4.Text;
Query1.Post; 恩~由於我的欄位型態大多以char及decimal 為主…所以我不知道要如何下這個程式碼耶!
|
cashxin2002
版主 發表:231 回覆:2555 積分:1937 註冊:2003-03-28 發送簡訊給我 |
您好﹗ Char形態字段的直接使用如下的方法﹕
Query1.Fields.FieldByName('字段名稱').Value := DBEdit1.Text; decimal形態字段的使用如下的方法﹕
Query1.Fields.FieldByName('字段名稱').Value := StrToFloat(DBEdit1.Text); =================================
有空來瞅瞅我﹗因為我是您的朋友﹐有您真好﹗
================================
------
忻晟 |
ph
一般會員 發表:3 回覆:27 積分:11 註冊:2003-09-28 發送簡訊給我 |
Hi:
DBEDIT是資料感知的元件,user在keyin時就已經賦值了。這樣的
寫法要再貼一個UpdateSql 。Query的屬性中CachedUpdate要設成True
,Update Object要設成剛貼的那個UpdateSql。
1:在form Create時就先把Query打開
procedure TForm1.FormCreate(Sender: TObject); begin UpdateSql1.InsertSQL.Clear; UpdateSql1.InsertSQL.Add('insert into PDLB (LBPDID,LBPRTY,LBMARKN) ' ' Values (:LBPDID,:LBPRTY,:LBMARKM) '); UpdateSql1.ModifySQL.Clear; UpdateSql1.ModifySQL.Add('Update PDLB SET ' //ex LBPDID 是key ' LBPRTY=:LBPRTY, ' LBMARKN=:LBMARKN ' ' WHERE LBPDID =:OLD_LBPDID '); UpdateSql1.DeleteSQL.Clear; UpdateSql1.DeleteSQL.Add(' Delete From PDLB ' ' WHERE LBPDID=:OLD_LBPDID'); Query1.Close; Query1. Query1.Sql.clear; Query1.Sql.Add('SELECT * from PDLB where 1=1') //選全部 Query1.Open; end;2.User 按 Insert鍵時下Query.insert procedure TForm1.btnInsertClick(Sender: TObject); begin Query1.Insert; end;3.User 按 Save鍵時下 Query.Post及ApplyUpdate procedure TForm1.btnSaveClick(Sender: TObject); begin Query1.Post; Query1.ApplyUpdates; Query1.CommitUpdates; end;或者你改用TTable 應該會更簡單 山即是我 我即是山
------
學了這麼久還是沒進步 |
tea15
初階會員 發表:64 回覆:72 積分:27 註冊:2005-06-15 發送簡訊給我 |
您好,我改了您說的那段…程式如下:
Query1.Close;
Query1.SQL.Clear;
Query1.SQL.Add('select * From PDLB');
Query1.Open;
Query1.Insert;
Query1.Fields.FieldByName('LBPDID').Value :=DBEdit1.Text;
Query1.Fields.FieldByName('LBPRTY').Value :=DBEdit2.Text;
Query1.Fields.FieldByName('LBMARKN').Value := DBEdit3.Text;
Query1.Fields.FieldByName('LBMARKC').Value := DBEdit4.Text;
Query1.Fields.FieldByName('LBWQTY').Value :=StrToFloat(DBEdit5.Text);
Query1.Fields.FieldByName('LBSTUT').Value :=StrToFloat(DBEdit6.Text);
Query1.Post;
那麼出現這麼一個錯誤訊息...這是為什麼呢?
|
ph
一般會員 發表:3 回覆:27 積分:11 註冊:2003-09-28 發送簡訊給我 |
引言: Query1.Fields.FieldByName('LBWQTY').Value :=StrToFloat(DBEdit5.Text); Query1.Fields.FieldByName('LBSTUT').Value :=StrToFloat(DBEdit6.Text);StrTofloat 函數遇到空字串時會出現錯誤 檢查DBEDIT5 及 DBEDIT6是否為空字串 或改成醬: if DBEdit5.Text <> '' then Query1.FieldByName'LBWQTY').Asfloat:=StrToFloat(DBEdit5.Text) else Query1.fieldByName('LBWQTY').Asfloat:=0;山即是我 我即是山
------
學了這麼久還是沒進步 |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |