Delphi7を使っています。
SQLServerに入力したデータを登録するようにしたいのですが、登録のボタンをクリックすると
パラメータ'コード'が見つかりません
というエラーが出ます。
どこがおかしいのか教えてください。
procedure TForm1.Button1Click(Sender: TObject);
//登録(続けて登録)処理
begin
if Edit1.Text = '' then//必須入力項目確認
ShowMessage('名前が入力されていません')
else
begin
if Edit8.Text = '' then//必須入力項目確認
ShowMessage('カナが入力されていません')
else
begin
if Application.MessageBox('登録してよろしいですか?','登録確認',MB_YESNO) <> IDYES then//登録確認
//登録処理
ADOQuery1.SQL.Text := 'INSERT INTO TBL_アドレス帳 VALUES (:コード,:カナ名,:名前,:グループ,:住所1,:住所2,:電話番号,:メールアドレス)';
ADOQuery1.Parameters.ParamByName('コード').Value := Edit7.Text;
ADOQuery1.Parameters.ParamByName('カナ名').Value := Edit8.Text;
ADOQuery1.Parameters.ParamByName('名前').Value := Edit1.Text;
ADOQuery1.Parameters.ParamByName('グループ').Value := ComBoBox1.Text;
ADOQuery1.Parameters.ParamByName('住所1').Value := Edit3.Text;
ADOQuery1.Parameters.ParamByName('住所2').Value := Edit4.Text;
ADOQuery1.Parameters.ParamByName('電話番号').Value := Edit5.Text;
ADOQuery1.Parameters.ParamByName('メールアドレス').Value := Edit6.Text;
ADOQuery1.ExecSQL;
ShowMessage('登録しました');
//初期画面に戻す
ADOQuery2.SQL.Text := 'SELECT(CONVERT(INT,MAX(ISNULL(コード,0)) + 1))AS コード FROM TBL_アドレス帳';
ADOQuery2.Open;
Edit7.Text := ADOQuery2.FieldByName('コード').AsString;
Edit1.Text := '';
Edit8.Text := '';
ComboBox1.Text := '01';
Edit3.Text := '';
Edit4.Text := '';
Edit5.Text := '';
Edit6.Text := '';
end;
end;
end;
>ADOQuery1.ExecSQL;ではなくてADOQuery.Post;
ExecSQLはSQL文を実行するときに使用します。
はずしているかもしれませんが・・・
TADOQueryの Prepared プロパティ は Trueですか?
>>Postさん
Postに変えてみましたが同じ結果でした。
>>igyさん
Trueに直しましたが、同じ結果でした。
> Postに変えてみましたが同じ結果でした。
Postではなく、ExecSQL を使ってよいと思います。
> Trueに直しましたが、同じ結果でした。
では
>:コード
などのように2バイト文字を使わずに、
: CODE
のようにして、
> ADOQuery1.Parameters.ParamByName('コード').Value := Edit7.Text;
を
ADOQuery1.Parameters.ParamByName('CODE').DataType := ftString;
ADOQuery1.Parameters.ParamByName('CODE').Value := Edit7.Text;
のように、DataType も指定した場合、どうですか?
すいません!!
単純ミスでした。
>> if Application.MessageBox('登録してよろしいですか?','登録確認',MB_YESNO) <> IDYES then//
で、= にしなくてはいけないところを<>にしていました。
>> パラメータ'コード'が見つかりません
は、いいえを選択したときに出てしますのですがこれは何でしょう・・・
> if Application.MessageBox('登録してよろしいですか?','登録確認',MB_YESNO) <> IDYES then//登録確認
以降を
begin
end;
で囲んでないとか・・・
igyさんできました!!
本当にありがとうございました。
ツイート | ![]() |