我有以下代碼Parameters.ParamByname不接受字符串值德爾福
procedure TFrmMain.ComboBox1KeyPress(Sender: TObject; var Key: Char);
begin
if Key = #13 then
begin
ADOQuery1.close;
ADOQuery1.sql.Text := 'INSERT INTO palletweighttemp(TickCode,SchedID,BatchNo)values';
ADOQuery1.SQL.Add(' (:field1,(select SchedID from TicketBatch where TickCode =:field1),');
ADOQuery1.SQL.Add('(select BatchNo from TicketBatch where TickCode =:field1))');
ADOQuery1.Parameters.ParamByName('field1').DataType := ftString;
ADOQuery1.Parameters.ParamByName('field1').Value := ComboBox1.Text;
ADOQuery1.ExecSQL;
PopulateDBGrid;
ComboBox1.SetFocus;
end;
end;
我填充使用
procedure TFrmMain.PopulateBoxes();
begin
ComboBox1.SetFocus;
ComboBox1.Perform(WM_SYSKEYDOWN, VK_TAB, 0);
ComboBox1.clear;
ADOQuery1.sql.add
('select * from TicketBatch where isProcesed = 0 and TickCode is not null');
ADOQuery1.open;
ComboBox1.Text := '';
while not ADOQuery1.Eof do
begin
ComboBox1.Items.add(ADOQuery1.FieldByName('TickCode').AsString);
ADOQuery1.Next;
end;
ADOQuery1.close;
end;
如果我回車來運行我的Combobox1KeyPress程序錯誤彈出我的組合框那
我假設這是因爲它需要一個整數,目前是一個字符串 請幫助
那麼'TickCode'列是一個'int'類型?如果是這樣,不要爲它定義一個參數作爲字符串,甚至不會認爲你可以在那裏插入文本值「F105165」。該值意味着是十六進制數字還是要存儲到該列的文本值? – Victoria
該值是一個字符串類型,需要將其存儲爲字符串 –
以調試器模式運行項目。它在什麼方面停止提出這個錯誤?知道這條線將幫助你確定原因。 –