Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Delphi: Базы данных и репортинг > ADOCommand не передает текст...


Автор: Fresh Meat 15.9.2005, 15:44
procedure TForm1.Button1Click(Sender: TObject);
var
a,b,c: string;
begin
c:=edit1.Text;
a:=edit3.text;
b:=edit2.text;

ADOCommand1.CommandText:= 'Insert into myteble values('+a+','+b+','+c+')';
ADOCommand1.Execute;
end;

smile


Автор: bas 15.9.2005, 16:54
И в результате у тебя будет строка
Insert into myteble values(Вася,Пупкин,1976)
Если с последним параметром понятно то с первыми двумя проблема.
И где список полей, или это не обязательно?

Автор: offline 15.9.2005, 18:31
а может так smile ?

Код

 INSERT INTO Table2 (Поле1, Поле2, Поле3, ... ) 
 SELECT Поле1, Поле2, Поле3, ... FROM Table1 
 WHERE условие


только это запрос на выборку из таблицы

Автор: Guest 16.9.2005, 07:02
[quote]Если с последним параметром понятно то с первыми двумя проблема.
[/quotе]
Вот именно... Ну а что не так-то? Вроде типы совпадают.... smile

Автор: Петрович 16.9.2005, 08:31
Цитата(Guest @ 16.9.2005, 08:02)
Вот именно... Ну а что не так-то? Вроде типы совпадают....

Интересно, какй это тип может принять значение Вася. Наверное это всетаки значение строкового типа, требующего заключать текст в кавычки smile.
Надо наверное так:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c: string;
begin
  c:=edit1.Text;
  a:=edit3.text;
  b:=edit2.text;

  ADOCommand1.CommandText:= 'Insert into myteble values('''+a+''','''+b+''','''+c+''')';
  ADOCommand1.Execute;
end;

обрати внимание на кавычки.
Правда, тогда сломается если в строках edit?.Text встретятся кавычки. Чтобы этого не произошло, надо делать так:
Код

procedure TForm1.Button1Click(Sender: TObject);
var
  a,b,c: string;
begin
  c:=edit1.Text;
  a:=edit3.text;
  b:=edit2.text;

  ADOCommand1.CommandText:= 'Insert into myteble values('
                                        +AnsiQuotedStr(a,'''')+','
                                        +AnsiQuotedStr(b,'''')+','
                                        +AnsiQuotedStr(c,'''')+')';
  ADOCommand1.Execute;
end;


Но, правильнее всего будет так:
Код

procedure TForm1.Button1Click(Sender: TObject);
begin
  ADOCommand1.CommandText:= 'Insert into myteble values(:a,:b,:c)';
  ADOCommand1.Parameters.ParamValues['a'] := edit1.Text;
  ADOCommand1.Parameters.ParamValues['b'] := edit2.Text;
  ADOCommand1.Parameters.ParamValues['c'] := edit3.Text;
  ADOCommand1.Execute;
end;


Автор: FreM 16.9.2005, 08:44
Пасиба! Петровичу - респект!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)