Delphi ошибка синтаксиса insert into

The problem is that Name (and possibly Password) is a reserved word in MS Access. It’s a poor choice for a column name, but if you must use it you should escape it by enclosing it in square brackets ([]). You’re also missing an opening parenthesis (() after your VALUES statement, and a comma after the :adminnumber parameter.

ADOquery1.SQL.Add('Insert into admins');
ADOquery1.SQL.Add('([Name] , [Surname], [Dateadded], [Adminnumber], [Password])');  
ADOquery1.SQL.Add('Values (:Name, :Surname, :Dateadded, :adminnumber, :Password)');
ADOquery1.Parameters.ParamByName('Name').Value := edit11.Text;
ADOquery1.Parameters.ParamByName('Surname').Value := edit12.Text;
ADOquery1.Parameters.ParamByName('Dateadded').Value := edit13.Text;
ADOquery1.Parameters.ParamByName('Password').Value := edit14.Text;
ADOquery1.Parameters.ParamByName('Adminnumber').Value := edit15.Text;
ADOquery1.ExecSQL;
ADOquery1.SQL.Text := 'Select * from admins';
ADOquery1.Open;

(The error can’t be moving around, as you say in the comments to your question. The only line that can possibly cause the problem is the ADOQuery1.ExecSQL; line, as it’s the only one that executes the INSERT statement. It’s impossible for any other line to raise the exception.)

You should make some changes here that are pretty important to the maintainability of your code.

First, break the habit immediately of using the default names for controls, especially those you need to access from your code later. You change the name by changing the Name property for the control in the Object Inspector.

It’s much easier in the code to use NameEdit.Text than it is to use Edit1.Text, especially by the time you get to Edit14. It would be much clearer if Edit14 was named PasswordEdit instead, and you’ll be happy you did six months from now when you have to change the code.

Second, you should avoid using the default variant conversion from string that happens when you use ParamByName().Value. It works fine when you’re assigning to a text column, but isn’t really good when the type isn’t text (such as when using dates or numbers). In those cases, you should convert to the proper data type before doing the assignment, so that you’re sure it’s done correctly.

ADOQuery1.ParamByName('DateAdded').Value := StrToDate(DateEdit.Text);
ADOQuery1.ParamByName('AdminNumber').Value := StrToInt(AdminNum.Text);

Finally, you should never, ever use string concatenation such as ‘SOME SQL »’ + Edit1.Text + »’,»’. This can lead to a severe security issue called SQL injection that can allow a malicious user to delete your data, drop tables, or reset user ids and passwords and giving them free access to your data. A Google search will find tons of information about the vulnerabilities that it can create. You shouldn’t even do it in code you think is safe, because things can change in the future or you can get a disgruntled employee who decides to cause problems on the way out.

As an example, if a user decides to put John';DROP TABLE Admins; into edit14 in your application, and you call ExecSQL with that SQL, you will no longer have an Admins table. What happens if they instead use John';UPDATE Admins SET PASSWORD = NULL; instead? You now have no password for any of your admin users.

KMSNasgool

61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

1

01.09.2014, 15:16. Показов 2052. Ответов 9

Метки нет (Все метки)


Студворк — интернет-сервис помощи студентам

Использую Indy. Задача у меня такая, клиентская часть программы высылает на сервер в текстовом виде информацию о компьютере. Сервер проверяет наличие записи о данном компьютере в базе Access и делает новую запись, если ее нет. До того как начал прикручивать базу данных все работало, данные сервер получает. Проверка на наличие записи о компе идет по его имени. Проверка тоже проходит отлично (проверял опытным путем). Добавление записи пытаюсь сделать с помощью ADOCommand. На методе Execute выходит ошибка (скрин во вложении).

Ошибка синтаксиса в инструкции INSERT INTO

Вот код обработчика команды на сервере:

Delphi
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
procedure TForm_Server.ServerTIdCommandHandler_InfoCommand(
  ASender: TIdCommand);
var
  C, I: Integer;
begin
  Memo_Log.Lines.Add('Получена информация о клиенте.');
  Memo_Log.Lines.Add('Компьютер');
  Memo_Log.Lines.Add('  Процессор: ' + ASender.Params.Strings[3]);
  Memo_Log.Lines.Add('  Оперативная память: ' + ASender.Params.Strings[5] + 'Mb');
  Memo_Log.Lines.Add('Сеть');
  Memo_Log.Lines.Add('  IP адрес: ' + ASender.Params.Strings[0]);
  Memo_Log.Lines.Add('  MAC адрес: ' + ASender.Params.Strings[1]);
  Memo_Log.Lines.Add('  Имя компьютера: ' + ASender.Params.Strings[2]);
  Memo_Log.Lines.Add('Имя пользователя: ' + ASender.Params.Strings[4]);
  Memo_Log.Lines.Add('Подключенные принтера:');
  C := StrToInt(ASender.Params.Strings[6]);
  if C = 0 then begin
    Memo_Log.Lines.Add(' Нет.');
  end else begin
    for I := 0 to C - 1 do begin
      Memo_Log.Lines.Add('  ' + ASender.Params.Strings[7 + I]);
    end;
  end;
  ADOQuery.SQL.Clear;
  ADOQuery.SQL.Add('SELECT * FROM Computers WHERE Computers.Nm=''' +
    ASender.Params.Strings[2] + '''');
  ADOQuery.Open;
  if ADOQuery.RecordCount = 0 then begin
    Memo_Log.Lines.Add('Запись о данном компьютере не найдена.');
    Memo_Log.Lines.Add('Создание новой записи.');
    ADOQuery.Close;
    ADOCommand1.CommandText := 'INSERT INTO Computers (Nm, Proc, RAM, IP, MAC, Usr, Dt) ' +
      'VALUES(:pNm, :pProc, :pRAM, :pIP, :pMAC, :pUsr, :pDt)';
    ADOCommand1.Parameters.ParamByName('pNm').Value := ASender.Params.Strings[2];
    ADOCommand1.Parameters.ParamByName('pProc').Value := ASender.Params.Strings[3];
    ADOCommand1.Parameters.ParamByName('pRAM').Value := StrToInt(ASender.Params.Strings[5]);
    ADOCommand1.Parameters.ParamByName('pIP').Value := ASender.Params.Strings[0];
    ADOCommand1.Parameters.ParamByName('pMAC').Value := ASender.Params.Strings[1];
    ADOCommand1.Parameters.ParamByName('pUsr').Value := ASender.Params.Strings[4];
    ADOCommand1.Parameters.ParamByName('pDt').Value := Now;
    ADOCommand1.Execute; // Тут возникает данная ошибка
  end else begin
    Memo_Log.Lines.Add('Запись о данном компьютере уже есть в базе данных.');
    ADOQuery.Close;
  end;
end;



0



61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

01.09.2014, 15:22

 [ТС]

2

При том пытался формировать CommandText полностью без использования параметров. Вылетает та же ошибка. Добавляю CommandText в Watch. Ставлю брейкпойнт на Execute. Копирую содержимое непосредственно в ацесс, запрос проходит успешно. А в программе выдает ошибку.



0



Native x86

Эксперт Hardware

5185 / 3031 / 875

Регистрация: 13.02.2013

Сообщений: 9,635

01.09.2014, 15:24

3

Трудно сказать, но я бы во-первых отказался от .Value при присвоении значений параметрам и использовал вместо этого типизированные свойства типа .AsInteger, .AsString и, особенно это касается последнего параметра, .AsDateTime. Да, и вместо ADOCommand попробуйте ADOQuery.



0



61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

01.09.2014, 15:31

 [ТС]

4

У меня Delphi 7. Среди свойств ParamByName нет AsString и остальных. С Query сейчас попробую. Отпишу.



0



Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

01.09.2014, 15:34

5

Еще с кодировкой могут быть проблемы. Русские символы в запросе есть?



0



61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

01.09.2014, 15:45

 [ТС]

6

У ADOQuery тоже параметры принимаются только через Value. Та же ошибка.

Добавлено через 58 секунд
Русских символов нет, передаются данные собранные программным путем с клиентского компа, по коду видно что это за данные

Добавлено через 8 минут
Сейчас даже попробовал сконфигурировать параметры в визуальном редакторе на стадии разработки. Назначить им имена и типы — та же ошибка



0



KOPOJI

Почетный модератор

Эксперт HTML/CSSЭксперт PHP

16842 / 6720 / 880

Регистрация: 12.06.2012

Сообщений: 19,967

01.09.2014, 15:48

7

Лучший ответ Сообщение было отмечено KMSNasgool как решение

Решение

А если попробовать так?

Delphi
1
2
ADOCommand1.CommandText := 'INSERT INTO [Computers] ([Nm], [Proc], [RAM], [IP], [MAC], [Usr], [Dt]) ' +
      'VALUES(:pNm, :pProc, :pRAM, :pIP, :pMAC, :pUsr, :pDt)';

Хотя вроде нет никаких зарезервированных слов, но кто его знает..



1



61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

01.09.2014, 15:50

 [ТС]

8

Есть русские символы в названии одного из принтеров =)



0



Модератор

3488 / 2611 / 741

Регистрация: 19.09.2012

Сообщений: 7,971

01.09.2014, 15:50

9

А локально на одном компе тоже ошибку выдает?
И интересно увидеть запрос, получающийся в CommandText в Watch (перед выполнением Execute).



1



61 / 51 / 25

Регистрация: 17.12.2013

Сообщений: 234

01.09.2014, 15:57

 [ТС]

10

FIL, огромное Вам спасибо! Квадратные скобки вокруг названий полей помогли. Все отлично заработало.

Добавлено через 32 секунды
KOPOJI, Извиняюсь, это я к Вам обращялся



0



Сообщения без ответов | Активные темы | Избранное

 

Delphi и ADO

Сообщение26.04.2008, 16:26 


26/04/08
13

Кто-нибудь писал запросыв Delphi? Почему-то вылезает ошибка: неправильный символ команды Insert into.

str := ‘INSERT INTO prihod (code_tov, code_mag, count, date_tov) VALUES (2, 1, 1, «2/2/2008»);’;

DataModule3.ADOQuery1.SQL.Text := str;

DataModule3.ADOQuery1.Open;

Используется БД Access 2007

Подскажите, что здесь не так. Заранее спасибо! :?: :?: :?:

Профиль  

Yuri Gendelman 

Re: Delphi и ADO

Сообщение26.04.2008, 16:36 

Заслуженный участник


15/05/05
3445
USA

neznakomka писал(а):

str := ‘INSERT INTO prihod (code_tov, code_mag, count, date_tov) VALUES (2, 1, 1, «2/2/2008»);’;

В конце запроса не нужна точка с запятой. Попробуйте заменить на

Цитата:

str := ‘INSERT INTO prihod (code_tov, code_mag, count, date_tov) VALUES (2, 1, 1, «2/2/2008»)’;

Профиль  

neznakomka 

Сообщение26.04.2008, 17:39 


26/04/08
13

не помогает, ошибка таже :(

Профиль  

worm2 

Сообщение26.04.2008, 17:55 

Заслуженный участник
Аватара пользователя


01/08/06
2961
Уфа

Поэкспериментируйте. Например, начните с

Код:

INSERT INTO prihod (code_tov) VALUES (2)

и посмотрите, что получится.

Может быть, ему «2/2/2008» не нравится, ‘2/2/2008’ подавай? Или вместо 2, 1, 1 надобно ‘2’, 1, ‘1’ ?

(не забывайте, что одинарные кавычки внутри строки нужно удваивать).

Профиль  

PSP 

Сообщение26.04.2008, 17:58 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

Вы пытаетес добавить записи в объект prihod ,состоящий из 4х столбцов.,им присваиваете значения 2, 1, 1, «2/2/2008». Может, с типами столбцов несоответствие?

Можете код ошибки сказать?

Профиль  

neznakomka 

Сообщение26.04.2008, 20:58 


26/04/08
13

В таблице prihod 5 полей:

id — счётчмк

code_tov, code_mag, count — целые числа

date_tov — дата/время

Пытаюсь писать так:

str := ‘Insert into prihod (code_tov, code_mag, count, date_tov)VALUES (2, 1, 1, 2/2/2008);’;

В аксесе работает, а в делфи нет(((

При выполнении пишет «Ошибка синтаксиса в инструкции insert into»

Все варианты с кавычками перепробовала — не помогает :?: :?:

Профиль  

PSP 

Сообщение26.04.2008, 21:00 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

neznakomka писал(а):

В таблице prihod 5 полей:
id — счётчмк
code_tov, code_mag, count — целые числа
date_tov — дата/время

Пытаюсь писать так:
str := ‘Insert into prihod (code_tov, code_mag, count, date_tov)VALUES (2, 1, 1, 2/2/2008);’;

В аксесе работает, а в делфи нет(((

При выполнении пишет «Ошибка синтаксиса в инструкции insert into»
Все варианты с кавычками перепробовала — не помогает :?: :?:

Какая версия Делфи у Вас?

Имеется ли у ошибки номер, ну типа :»Ошибка синтаксиса в инструкции insert into ****» ?

Профиль  

neznakomka 

Сообщение26.04.2008, 21:02 


26/04/08
13

Delphi 7

Acces 2007

Я что-то не вижу никакого номера у ошибки. Программа полностью умирает.

Профиль  

PSP 

Сообщение26.04.2008, 21:07 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

neznakomka писал(а):

Delphi 7
Acces 2007

Я что-то не вижу никакого номера у ошибки. Программа полностью умирает.

В каком смысле умирает? Встаёт на процессе отладки?

Если это так, попробуйте сократить запрс, обратившись не к 5ти, а к одному какому-либо столбцу.Если не получиться,можете программу скинуть мне , попробую разобраться, если хотите..?

Профиль  

neznakomka 

Сообщение26.04.2008, 21:21 


26/04/08
13

Похоже что-то с типом Дата/время, так как в другую табличку запись благополучно вставляется

Профиль  

PSP 

Сообщение26.04.2008, 21:26 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

neznakomka писал(а):

Похоже что-то с типом Дата/время, так как в другую табличку запись благополучно вставляется

Ну вот видите.. :) Поэкспериментируйте с настройками типа Дата/время, и всё получиться…

Кстати, я так понял, что Вы делаете какую-то программу для магазина,если не секрет?

Профиль  

neznakomka 

Сообщение26.04.2008, 21:30 


26/04/08
13

не секрет))

Это курсовой по БД

Спасиба за помощь, придётся теперь бороться с датой :)

Профиль  

PSP 

Сообщение26.04.2008, 21:32 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

neznakomka писал(а):

не секрет))
Это курсовой по БД
Спасиба за помощь, придётся теперь бороться с датой :)

А чего тут бороться, пришлите прогу мне, разберусь.. :)

Профиль  

neznakomka 

Сообщение26.04.2008, 22:00 


26/04/08
13

Уррра!

Беда в том, что я назвала поле Count! А это зарезервированное слово!

Я переименовала и всё заработало :D

Профиль  

PSP 

Сообщение26.04.2008, 22:10 

Заслуженный участник
Аватара пользователя


22/10/05

2601
Москва,физфак МГУ,1990г

neznakomka писал(а):

Уррра!
Беда в том, что я назвала поле Count! А это зарезервированное слово!
Я переименовала и всё заработало :D

Молодец! И как я не догадался!!

Кстати, а какой литературой для БД Вы пользуетесь?

Профиль  

Модераторы: Karan, Toucan, PAV, maxal, Супермодераторы

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей

Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Crazy_Pickle

Гость


Уважаемые опытные да бывалые, не сочтите за труд наставить нуба на путь истинный.
Пишу таблицу маршрутов ( так в данном случае товарные составы называются) под Access, на дельфях, и хочу сделать добавление этих самых маршрутов из программы, для этого собираюсь использовать SQL запросы, в частности INSERT. Для облегчения задачи таблицы у меня связаны, и что бы пользователь не вбивал ID нужной компании или продукции, я использую combobox, беру оттуда итеминдекс, в моем случае он аналогичен ID. Но это стороннее пояснение, что бы были понятны мои действия, итак, у меня выдает ошибку в синтаксисе INSERT INTO. Вот код кнопки ответственной за добавление.

procedure TForm4.BitBtn1Click(Sender: TObject);
Var i, x: Integer;
s: String;
begin
x:= Partner.ItemIndex;
i:= Product.ItemIndex;
S:= ‘Insert sostav (id_customer, Id_production, GTO, GD, nomer, values) Values («‘+IntToStr(x)+'»,»‘+IntToStr(i)+'»,»‘+GTO.Text+'»,»‘+GD.Text+'»,»‘+Nomer.Text+'»,»‘+Ves.Text+'»)’;
Showmessage (s);
ADOQuery1.SQL.Add(s);
ADOQuery1.ExecSQL;
ADOQuery1.Clear;
end;


Записан
Sla

Команда клуба

ua
Offline Offline
Пол: Мужской

WWW


какой синтаксис insert?


Записан

Мы все учились понемногу… Чему-нибудь и как-нибудь.

Dale

Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW


Я бы поступил так: поставил точку останова в строке, где строке запроса S присваивается значение, скопировал запрос в буфер обмена, а потом выполнил бы его вручную в среде Access. Обычно подобные ошибки легко отлавливаются таким образом.

То, что сразу бросилось в глаза: название поля values явно неудачное, лучше не давать объектам базы данных имена, совпадающие с ключевыми словами. Может, в данном конкретном случае дело и не в этом, но вообще от этого бывают весьма неприятные и труднонаходимые сюрпризы.


Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. — Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. — Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.

Sla

Команда клуба

ua
Offline Offline
Пол: Мужской

WWW


так у него есть отладочная точка Улыбаюсь
Showmessage (s);

Но это стандартная ошибка — смотрю в книгу, вижу фигу…

К топикстартеру совсем не относится.


Записан

Мы все учились понемногу… Чему-нибудь и как-нибудь.

Dale

Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW


Я давненько Дельфей в руках не держал, уже не помню, позволяет ли Showmessage копировать текст своего сообщения в буфер обмена. А с точкой останова это точно получится. И тогда уже в самом Access доводить запрос до ума, пока не заработает.


Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. — Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. — Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.

Crazy_Pickle

Гость


Ну в данном случае мне позволено работать только таким образом, конкретно в ACCESS не получится.
А ошибка следующая:
Project Marshrut.exe raised exception class EOleException with message ‘Ошибка синтаксиса в инструкции INSERT INTO’.
Думал дело в кавычках и апострофах, перепробовал 4 варианта, так и не помогло, чешу репу, в чем может быть дело.


Записан
Dale

Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW


А чему равно значение строки S?


Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. — Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. — Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.

Sla

Команда клуба

ua
Offline Offline
Пол: Мужской

WWW


Повторю вопрос

Какой синтаксис INSERT ?


Записан

Мы все учились понемногу… Чему-нибудь и как-нибудь.

Dale

Блюзмен
Команда клуба

ru
Offline Offline
Пол: Мужской

WWW


Если подвох в отсутствии INTO после INSERT, то MSDN утверждает, что это не обязательно, как и список полей для вставки данных:

Using INSERT
The INSERT statement adds one or more new rows to a table. In a simplified treatment, INSERT has the following form:

INSERT [INTO] table_or_view [(column_list)] data_values

Я сам привык его всегда ставить, отсутствие режет глаз, но для интерпретатора SQL это всего лишь шумовое слово, вроде AS и т.п. Может, конечно, в диалекте SQL для Access его опускать недопустимо. В любом случае нужно проверить на живой базе с ним и без него.


Записан

Всего лишь неделя кодирования с последующей неделей отладки могут сэкономить целый час, потраченный на планирование программы. — Дж. Коплин.

Ходить по воде и разрабатывать программное обеспечение по спецификациям очень просто, когда и то, и другое заморожено. — Edward V. Berard

Любые проблемы в информатике решаются добавлением еще одного уровня косвенности – кроме, разумеется, проблемы переизбытка уровней косвенности. — Дэвид Уилер.

zubr

Гость


Ошибка в двойных кавычках. Попробуй:

S:= ‘Insert sostav (id_customer, Id_production, GTO, GD, nomer, values) Values(‘ + »» + IntToStr(x)+ »» + ‘,’ + »» +IntToStr(i) + »» //и т. д.


Записан
Crazy_Pickle

Гость


Спасибо всем кто пытался помочь, разобрался. Целых две ошибки было.
Ошибка была в двойных кавычках, пришлось ставить »’ (три апострофа, для преодоления)
Действительно values было виновато ( специально затестил после нахождение ошибки в синтаксисе, действительно когда стоит вальюс — не робит)


Записан
Crazy_Pickle

Гость


О, не заметил сообщений. спасибо энивей )


Записан
x77

Модератор

ro
Offline Offline
Пол: Мужской

меняю стакан шмали на обратный билет с Марса.


просто BDE значение в двойных кавычках считает «токеном», т.е. наименованием поля или таблицы, а в ординарных — собственно, значением Улыбаюсь


Записан

In this article we will learn about some of the frequently asked Delphi programming questions in technical like “INSERT into syntax error in delphi” Code Answer. When creating scripts and web applications, error handling is an important part. If your code lacks error checking code, your program may look very unprofessional and you may be open to security risks. Error or stack handling on Delphi was simple and easy. An error message with filename, line number and a message describing the error is sent to the browser. This tutorial contains some of the most common error checking methods in Delphi. Below are some solution about “INSERT into syntax error in delphi” Code Answer.

INSERT into syntax error in delphi

ADOquery1.SQL.Add('Insert into admins');
ADOquery1.SQL.Add('([Name] , [Surname], [Dateadded], [Adminnumber], [Password])');  
ADOquery1.SQL.Add('Values (:Name, :Surname, :Dateadded, :adminnumber, :Password)');
ADOquery1.Parameters.ParamByName('Name').Value := edit11.Text;
ADOquery1.Parameters.ParamByName('Surname').Value := edit12.Text;
ADOquery1.Parameters.ParamByName('Dateadded').Value := edit13.Text;
ADOquery1.Parameters.ParamByName('Password').Value := edit14.Text;
ADOquery1.Parameters.ParamByName('Adminnumber').Value := edit15.Text;
ADOquery1.SQL.Text := 'Select * from admins';

Понравилась статья? Поделить с друзьями:
  • Delphi ошибка unable to create process
  • Delphi ошибка e2029
  • Delphi не выводить сообщение об ошибке
  • Delphi генерация ошибки
  • Delphi вывод ошибок