Einzelnen Beitrag anzeigen

marabu

Registriert seit: 6. Apr 2005
10.109 Beiträge
 
#2

Re: Stackoverflow Fehler bei SQL.Active := True

  Alt 8. Jul 2007, 08:05
Hallo Tobias,

die Fehlerursache dürften die fehlenden single quotes um den string PhoneNo sein.

Bei mir würde dein Code etwa so aussehen:

Delphi-Quellcode:
uses
  Masks;

procedure TDemoForm.NewButtonClick(Sender: TObject);
const
  FMT_SEL = 'SELECT * FROM ComMeth WHERE Phone = %s';
  FMT_INS = 'INSERT INTO ComMeth (Phone) VALUES (%s)';
  FMT_ERR = 'Phone number already exists.'#13#13'%s';
var
  sPhone: string;
begin
  sPhone := Trim(InputBox('Add Phone Number', 'Please add a valid phone number', ''));
  if (sPhone = '')
  or not MatchesMask(sPhone, '[0-9][0-9][0-9]-[0-9][0-9][0-9]-[0-9][0-9][0-9][0-9]') then
    Exit;
  with DBModule.Query do
  begin
    SQL.Text := Format(FMT_SEL, [QuoteStr(sPhone)]);
    Open;
    if IsEmpty then
    begin
      SQL.Text := Format(FMT_INS, [QuotedStr(sPhone)]);
      ExecSQL;
    end else
    begin
      ShowMessage(Format(FMT_ERR, [sPhone]));
      Close;
    end;
  end;
end;
Getippt und nicht getestet.

Freundliche Grüße
  Mit Zitat antworten Zitat