![]() |
|
|
#1
|
|||
|
|||
![]() База - Firedird 2.0, среда - Delphi7, таблица с полями ID (integer) FIO (varchar). Пытаюсь вставить запись с помощью query:
var id : integer; fio : string; begin id:=StrToInt(Edit1.Text); fio:=id:=Edit2.Text; IBQuery1.SQL.Clear; IBQuery1.SQL.Add('insert into users (USER_ID, FIO) values (''+id+'',''+fio+'')'); IBQuery1.SQL.Open; ругается на неправильный тип данных. Project Project1.exe raised exception class EIBInterBaseError with message 'conversion error from string "+id+"' Посоветуйте пожалуйста. Заранее благодарен. |
#2
|
|||
|
|||
![]() Код:
IBQuery1.SQL.Add('insert into users (USER_ID, FIO) values ('+ IntToStr(id)+', '+QuotedStr(fio)+')'); QuotedStr - функция гарантированно заключает строку в нужные для SQL кавычки (тоже надо делать и со значениями типа ДАТА). Числовые значения должны быть без кавычек. Да, еще. Для выполнения предложения "INSERT" требуется метод ExecSQL, а не Open (IBQuery1.ExecSQL). P.S. Забавное выражение "fio:=id:=Edit2.Text;". Никогда не встречал в Delphi такие конструкции. Естественно, компилятор, дает на нем ошибку. Не забывайте делать резервные копии Последний раз редактировалось san-46, 03.12.2008 в 22:47. |
#3
|
|||
|
|||
![]() Цитата:
fio:=id:=Edit2.Text - опечатался id:=Edit2.Text Если не трудно посоветуйте выход, как вставить нестрочные данные. |
#4
|
|||
|
|||
![]() Именно так как в примере. Если это числовое значение, то оно преобразовывается в строковое представление функциями IntToStr или FloatToStr (FloatToStrF).
Даты, функциями DateToStr (или другими похожими, коих многое количество в Delphi). Желательно не забывать про транзакции. В коде не видно никакого упоминания о них. Если транзакция активизирована до выполнения представленного вами кода, то это плохая практика. Не забывайте делать резервные копии Последний раз редактировалось san-46, 03.12.2008 в 23:22. |
#5
|
|||
|
|||
![]() Цитата:
Спасибо большое Вам за терпение и пояснения...это заслуживает уважения. Еще хотел уточнить один момент, а разве не так правильно (''+IntToStr(id)+'',''+StrQUOTE(fio)+'') . То есть с двумя одинарными ковычками. |
#6
|
|||
|
|||
![]() опять опечатка
![]() |