請問sql語法 |
尚未結案
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
txt22:='Update db1 SET no1=:no1,no2=:no2,';
txt22:=txt22 'no3=:no3,no4=:no4';
txt22:=txt22 ' where no9=:no9';
With SimpleDataSet1 do
begin
dataset.CommandText:=txt22;
Params.ParamByName('no1').AsString:=no1;
Params.ParamByName('no2').AsString:=no2;
Params.ParamByName('no3').AsString:=no3;
Params.ParamByName('no4').AsString:=no4;
Params.ParamByName('no9').AsString:=no9;
Execute;
end;
執行後沒錯誤,資料表內容卻沒修改,請問語法哪錯了.
|
YUIOPMM
一般會員 發表:3 回覆:3 積分:1 註冊:2004-08-04 發送簡訊給我 |
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
|
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
|
Fishman
尊榮會員 發表:120 回覆:1949 積分:2163 註冊:2006-10-28 發送簡訊給我 |
Hi mirage, 試試看以下寫法
txt22 := 'Update db1 SET no1=:no1,no2=:no2,'; txt22 := txt22 'no3=:no3,no4=:no4'; txt22 := txt22 ' where no9=:no9'; With SimpleDataSet1 do begin Close; Params.Clear; Dataset.CommandText := txt22; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); Dataset.Params.ParamByName('no1').AsString := edit1.text; Dataset.Params.ParamByName('no2').AsString := edit2.text; Dataset.Params.ParamByName('no3').AsString := edit3.text; Dataset.Params.ParamByName('no4').AsString := edit4.text; Dataset.Params.ParamByName('no9').AsString := edit5.text; Execute; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ----------------------------------
------
Fishman |
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言: Hi mirage, 試試看以下寫法txt22 := 'Update db1 SET no1=:no1,no2=:no2,'; txt22 := txt22 'no3=:no3,no4=:no4'; txt22 := txt22 ' where no9=:no9'; With SimpleDataSet1 do begin Close; Params.Clear; Dataset.CommandText := txt22; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); Dataset.Params.ParamByName('no1').AsString := edit1.text; Dataset.Params.ParamByName('no2').AsString := edit2.text; Dataset.Params.ParamByName('no3').AsString := edit3.text; Dataset.Params.ParamByName('no4').AsString := edit4.text; Dataset.Params.ParamByName('no9').AsString := edit5.text; Execute; end;---------------------------------- 小弟才疏學淺,若有謬誤尚請不吝指教 ---------------------------------- >>< face="Verdana, Arial, Helvetica"> 上述執行後出現錯誤 SimpleDataSet1:parameter 'no1' not found 另 如在SimpleDataSet1的 1.DataSet.CommandText輸入 Update db1 SET no1=:no1,no2=:no2, no3=:no3,no4=:no4 where no9=:no9 2.Params加入l_no with SimpleDataSet1 do begin Close; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); Dataset.Params.ParamByName('no1').AsString := edit1.text; Dataset.Params.ParamByName('no2').AsString := edit2.text; Dataset.Params.ParamByName('no3').AsString := edit3.text; Dataset.Params.ParamByName('no4').AsString := edit4.text; Dataset.Params.ParamByName('no9').AsString := edit5.text; Execute; end; 第1次執行後沒錯誤,資料表內容卻沒修改. 第2次執行時出現: dbexpress reror:[0x0009]:invalid parameter |
Chance36
版主 發表:31 回覆:1033 積分:792 註冊:2002-12-31 發送簡訊給我 |
引言: txt22:='Update db1 SET no1=:no1,no2=:no2,'; txt22:=txt22 'no3=:no3,no4=:no4'; txt22:=txt22 ' where no9=:no9'; With SimpleDataSet1 do begin dataset.CommandText:=txt22; Params.ParamByName('no1').AsString:=edit1.text; Params.ParamByName('no2').AsString:=edit2.text; Params.ParamByName('no3').AsString:=edit3.text; Params.ParamByName('no4').AsString:=edit4.text; Params.ParamByName('no9').AsString:=edit5.text; Execute; end; 執行後沒錯誤,資料表內容卻沒修改,請問語法哪錯了.mirage 你好 應該是沒有符合Where no9=:no9 條件的記錄吧!是否可以確定一下在Table 中是否存Edit5.Text的值呢? 以程式碼來看沒有問題呀! _______________________________________ 深藍的魚,祝您好運..........連連 |
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言:我確定都有相同值, 另相同的程式碼,用 clientdataset DataSetProvider SQLQuery 卻能正常修改. 我在想SimpleDataSet這元件,很怪異喔.....引言: txt22:='Update db1 SET no1=:no1,no2=:no2,'; txt22:=txt22 'no3=:no3,no4=:no4'; txt22:=txt22 ' where no9=:no9'; With SimpleDataSet1 do begin dataset.CommandText:=txt22; Params.ParamByName('no1').AsString:=edit1.text; Params.ParamByName('no2').AsString:=edit2.text; Params.ParamByName('no3').AsString:=edit3.text; Params.ParamByName('no4').AsString:=edit4.text; Params.ParamByName('no9').AsString:=edit5.text; Execute; end; 執行後沒錯誤,資料表內容卻沒修改,請問語法哪錯了.mirage 你好 應該是沒有符合Where no9=:no9 條件的記錄吧!是否可以確定一下在Table 中是否存Edit5.Text的值呢? 以程式碼來看沒有問題呀! _______________________________________ 深藍的魚,祝您好運..........連連 |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
引言: txt22:='Update db1 SET no1=:no1,no2=:no2,'; txt22:=txt22 'no3=:no3,no4=:no4'; txt22:=txt22 ' where no9=:no9'; With SimpleDataSet1 do begin dataset.CommandText:=txt22; Params.ParamByName('no1').DataType:=ftstring; Params.ParamByName('no1').AsString:=edit1.text; Params.ParamByName('no2').DataType:=ftstring; Params.ParamByName('no2').AsString:=edit2.text; Params.ParamByName('no3').DataType:=ftstring; Params.ParamByName('no3').AsString:=edit3.text; Params.ParamByName('no4').DataType:=ftstring; Params.ParamByName('no4').AsString:=edit4.text; Params.ParamByName('no9').DataType:=ftstring; Params.ParamByName('no9').AsString:=edit5.text; Execute; end; 執行後沒錯誤,資料表內容卻沒修改,請問語法哪錯了.插个花:补上上面几句试试看 ——行径窄处,留一步与人行—— —— |
mirage
初階會員 發表:40 回覆:101 積分:28 註冊:2004-01-05 發送簡訊給我 |
引言:引言: txt22:='Update db1 SET no1=:no1,no2=:no2,'; txt22:=txt22 'no3=:no3,no4=:no4'; txt22:=txt22 ' where no9=:no9'; With SimpleDataSet1 do begin dataset.CommandText:=txt22; Params.ParamByName('no1').DataType:=ftstring; Params.ParamByName('no1').AsString:=edit1.text; Params.ParamByName('no2').DataType:=ftstring; Params.ParamByName('no2').AsString:=edit2.text; Params.ParamByName('no3').DataType:=ftstring; Params.ParamByName('no3').AsString:=edit3.text; Params.ParamByName('no4').DataType:=ftstring; Params.ParamByName('no4').AsString:=edit4.text; Params.ParamByName('no9').DataType:=ftstring; Params.ParamByName('no9').AsString:=edit5.text; Execute; end; 執行後沒錯誤,資料表內容卻沒修改,請問語法哪錯了.插个花:补上上面几句试试看 ——行径窄处,留一步与人行—— ——>>< face="Verdana, Arial, Helvetica"> deity 先進您好: txt22:='Update db1 SET no1=:no1,no2=:no2,'; txt22:=txt22 'no3=:no3,no4=:no4'; txt22:=txt22 ' where no9=:no9'; With SimpleDataSet1 do begin close; DataSet.Params.Clear; dataset.CommandText:=txt22; DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); Params.ParamByName('no1').DataType:=ftstring; Params.ParamByName('no1').AsString:=edit1.text; Params.ParamByName('no2').DataType:=ftstring; Params.ParamByName('no2').AsString:=edit2.text; Params.ParamByName('no3').DataType:=ftstring; Params.ParamByName('no3').AsString:=edit3.text; Params.ParamByName('no4').DataType:=ftstring; Params.ParamByName('no4').AsString:=edit4.text; Params.ParamByName('no9').DataType:=ftstring; Params.ParamByName('no9').AsString:=edit5.text; Execute; end; 請問先進: 第一次執行時正確update資料. 第2次執行時出現: ’no value for parameter 'no1' ’ 請問原因是什麼 ??? |
deity
尊榮會員 發表:90 回覆:876 積分:678 註冊:2003-05-09 發送簡訊給我 |
|
chih
版主 發表:48 回覆:1186 積分:639 註冊:2002-04-02 發送簡訊給我 |
如果不好Debug,建議改成以下
var sqlstr:String; begin sqlstr:=''; sqlstr := 'Update db1 SET no1=:' edit1.text ',no2=:' edit2.text ',no3=:' edit3.text ',no4=:' edit4.text ',no9=:' edit5.text; With SimpleDataSet1 do begin Close; Params.Clear; Dataset.CommandText := sqlstr; SHOWMESSAGE(sqlstr); DataSet.Params.ParseSQL(SimpleDataSet1.DataSet.CommandText,True); Execute; end; end;如此一來就可以由sqlstr看出是那個條件錯誤了,TRY TRY SEE |
本站聲明 |
1. 本論壇為無營利行為之開放平台,所有文章都是由網友自行張貼,如牽涉到法律糾紛一切與本站無關。 2. 假如網友發表之內容涉及侵權,而損及您的利益,請立即通知版主刪除。 3. 請勿批評中華民國元首及政府或批評各政黨,是藍是綠本站無權干涉,但這裡不是政治性論壇! |