Обнаружены символы за пределами инструкции sql

Обнаружены символы за пределами инструкции sql

Инструкция SELECT. В основе большинства SQL-запросов лежит инструкция SELECT, важнейшие параметры которой приведены в следующем списке:

ALL, DISTINCT,DISTINCTROW предикаты

Таблица1 INNER JOIN Таблица2

GROUP BY Список_полей

ORDER BY Список_полей.

Примечание.С целью повышения наглядности каждая инструкция в примерах помещена в отдельную строку. Однако при оформлении SQL-запроса Access требует, чтобы все SQL-инструкции находились в одной строке, для перехода на следующую строку следует нажимать не клавишу [Enter], а комбинацию клавиш [Ctrl+Enter].

FROM Клиенты, [Потенциальные покупатели]

WHERE Клиенты.Фирма=[Потенциальные покупатели].Фирма;

Внимание! SQL-запрос всегда завершается точкой с запятой.

При отработке данного запроса анализируются сведения, взятые из таблиц Потенциальные покупатели и Клиенты.

Приведённый запрос состоит из инструкции SELECT с параметрами FROM и WHERE. Инструкция SELECT определяет поля, которые подлежат обработке (будут извлечены и представлены в качестве результата запроса). В рассматриваемом примере это поле Фирмаиз таблицы Клиенты. Параметр FROM указывает, какие таблицы содержат данное поле (между именами таблиц должны стоять запятые). В нашем примере это таблицы Потенциальные покупатели и Клиенты. С помощью параметра WHERE определяются требования, которым должны соответствовать извлекаемые записи (в рассматриваемом примере – равенство содержимого полей Клиенты. Фирма и [Потенциальные покупатели].Фирма).

При выполнении запроса из таблиц, заданных параметром FROM, извлекаются записи, удовлетворяющие условию WHERE, а из отобранных записей – поля, которые перечислены в инструкции SELECT. Приступая к работе с инструкцией SELECT, необходимо принимать во внимание следующее:

1. Обычно SELECT является первой командой SQL-запроса.

2. Между именами полей следует ставить запятые. Порядок имён полей в списке соответствует порядку их обработки и отображения в результирующем наборе данных.

3. Имя поля, содержащее пробел или разделитель, необходимо заключить в квадратные скобки.

4. При наличии одноимённых полей в обрабатываемых таблицах надлежит приводить полную спецификацию поля: Имя_Таблицы. Имя_поля.

Параметр FROM. Посредством параметра FROM определяют, какие таблицы или запросы содержат поля, приведённые в инструкции SELECT, т. е. составляют список обрабатываемых таблиц и запросов.

1. FROM задаётся как параметр для инструкции SELECT и всегда следует за ней.

2. В списке таблиц сначала указывается меньшая.

Используя символ *в качестве заменителя имени поля в инструкции SELECT, из таблицы можно отобрать все поля.

Пример:

Параметр WHERE. Параметр WHERE не обязателен, но если он присутствует в инструкции, то должен следовать за параметром FROM. Если параметр WHERE не задан, SQL-запрос выберет все записи.

Параметр WHERE позволяет определить, какие записи таблиц, указанных в списке FROM, появятся в результирующем наборе данных запроса. Access выбирает записи, которые соответствуют критериям, установленным с помощью параметра WHERE. Эти критерии идентичны критериям, вводимым в QBE-области.

Параметр IN. Данный параметр используется при работе с базами данных другого формата, с которыми может работать Access.

Этот SQL-запрос аналогичен запросу из предыдущего примера, но в данном случае сведения о клиентах собраны не в Access-базе, а в таблицах Клиентыи Потенциальные покупателииз базы формата dBASE IV, хранящиеся в файле C:/DBASE/INFO/CLIENTS.

При использовании параметра IN принимайте во внимание следующее:

1. Пользователь может обращаться только к одной внешней (любой другой, исключая активную) базе данных.

2. Указывая тип данных, созданных не в Access, следует добавлять точку с запятой (;), а также кавычки или апострофы: ’dBASE;’, ”dBASE;”.

FROM Клиенты, [Потенциальные покупатели]

IN “C:/DBASE/IFNO/CLIENTS” “dBASE IV;”

WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма;

Предикат ALL. С помощью параметра WHERE определяется критерий отбора записей из входного набора. Но в таблице могут присутствовать дубликаты (например, в таблицу клиентов ошибочно может быть дважды занесена запись об одном и том же клиенте). По умолчанию в выходном наборе, генерируемом при выполнении SQL-запроса, присутствуют все дубликаты. Управлять включением дубликатов в выходной набор можно с помощью специальных параметров-предикатов. По умолчанию команде SELECT соответствует предикат ALL (его можно явно не указывать), который задаёт включение в выходной набор всех дубликатов, отобранных по критерию WHERE. В команде SELECT предикат ALL следует за ключевым словом SELECT (перед именами отбираемых полей).

Выполняя такой запрос, Access выберет из таблицы клиентов все записи со всеми полями. Если в таблице есть одинаковые записи, они будут присутствовать в выходном наборе в том же количестве, что и в обрабатываемой таблице. Для борьбы с дубликатами применяются предикаты DISTINCT и DISTINCTROW.

Предикат DISTINCT. Если, выполняя этот SQL-запрос, Access найдёт название одной фирмы в нескольких записях, то в выходной набор это название будет включено только один раз.

Предикат DISTINCT следует применять в тех случаях, когда необходимо исключить записи, которые содержат повторяющиеся данные в выбранных полях. При использовании этого предиката значения указанных в инструкции SELECT полей должны быть уникальными, чтобы содержащая их запись вошла в выходной набор.

Читайте также:  Как найти корзину в почте gmail

SELECT DISTINCT Клиенты.Фирма

FROM Клиенты, [Потенциальные покупатели]

WHERE Клиенты.Фирма = [Потенциальные покупатели].Фирма;

Примечание. Результат запроса, в котором применён предикат DISTINCT, нельзя актуализировать. Действие команды с этим предикатом то же, что и в случае установки значения Да для опции Уникальные значения в диалоговом окне Свойства запроса.

Предикат DISTINCTROW.Этот предикат используется для исключения дубликатов из всех полей, а также для исключения повторяющихся записей.

SELECT DISTINCTROW Фирма

FROM Клиенты, Заказы,

Клиенты INNER JOIN Заказы

ON Клиенты. [Номер Клиента] = Заказы. [Номер Клиента]

Между таблицами Клиентыи Заказыустанавливается связь через поле Номер Клиента. Так как номер клиента является уникальным, таблица Клиенты не содержит дубликатов в поле Номер Клиента (в отличие от таблицы Заказы, в которой для некоторых клиентов указано несколько заказов).

В выходной набор запроса будет включен список всех фирм, которые сделали минимум один заказ.

Обращайте внимание на следующие моменты:

1. Предикат DISTINCTROW эффективен, если поля выбираются из одной, а не из всех используемых в запросе таблиц.

2. Предикат DISTINCTROW игнорируется, если в запрос включена только одна таблица.

Операция INNER JOIN. С помощью операции INNER JOIN создаётся специальное объединение таблиц. Объединение производится при условии равенства содержимого полей, приведённых после ключевого слова ON в записях таблиц, указанных в операции INNER JOIN. Записи из двух таблиц объединятся при обнаружении совпадающих значений в указанных полях. Такое объединение записей используется наиболее часто.

Операция INNER JOIN является не обязательной частью инструкции SELECT. Она оформляется как часть параметра FROM:

Пример:

Таблица1 INNER JOIN Таблица2

ON таблица1.ПолеА = Таблица2.ПолеБ

В данном случае установится связь между таблицами Таблица1и Таблица2. В выходной набор будут включены записи из этих таблиц при условии равенства содержимого: Таблица1.ПолеА = Таблица2.Поле Б. В операции могут участвовать два числовых поля любого типа (даже различных). Для полей других типов необходимо соблюдать следующее правило: поля должны иметь один и тот же тип данных, но могут иметь разные имена.

Параметр GROUP BY. При использовании параметра GROUP BY все идентичные значения в заданном поле объединяются в один элемент выходного набора. В нашем примере повторяющиеся имена фирм будут включены в выходной набор только один раз. Используя параметр GROUP BY, учитывайте:

1. Параметр GROUP BY является уточняющим (необязательным) параметром при использовании параметров FROM и WHERE.

2. Имя поля, содержащее пробел или разделитель, следует заключить в квадратные скобки.

Параметр HAVING. Access рассортирует данные о потенциальных покупателях по названиям фирм, сведёт повторяющиеся записи воедино и укажет в выходном наборе только те фирмы, названия которых содержат аббревиатуру Ltd.

В результате объединения записей с помощью параметра GROUP BY и применения параметра HAVING отображаются записи, соответствующие условиям, заданным в параметре HAVING. Это дополнительная возможность фильтрации выходного набора. Используя параметр HAVING, принимайте во внимание следующее:

1. HAVING – необязательный параметр, но если он задан, то должен следовать за параметром GROUP BY.

2. У параметра HAVING те же функции, что и у параметра WHERE, но область их действия ограничена выходным набором. WHERE определяет записи, которые должны быть выбраны. HAVING устанавливает, какие записи, сгруппированные посредством параметра GROUP BY, должны отображаться на экране.

SELECT [Потенциальные покупатели].*

FROM [Потенциальные покупатели]

HAVING Фирма Like “*HLtd;”

Параметр ORDER BY. Названия фирм-клиентов будут рассортированы в обратном алфавитном порядке.

Посредством параметра ORDER BY выполняется сортировка данных выходного набора в заданной последовательности. Сортировка может осуществляться по нескольким полям, которые в этом случае перечисляются через запятую после ключевого слова ORDER BY. Способ сортировки определяется ключевым словом, которое указывается в рамках параметра ORDER BY и следует за названием поля, по которому сортируются данные. Сортировка может выполняться для каждого поля из списка параметра ORDER BY. Используя параметр ORDER BY, принимайте во внимание следующее:

1. Параметр ORDER BY не является обязательным параметром; если он не задан, данные не сортируются и приводятся в том порядке, в котором они извлечены из набора.

2. По умолчанию выполняется сортировка по возрастанию. Явно она задаётся ключевым словом ASC.

3. Для выполнения сортировки в обратном порядке (от Я до А) или сортировки по убыванию необходимо после имени поля, по которому сортируются данные, ввести ключевое слово DESC.

4. Параметр ORDER BY обычно является последним элементом SQL-инструкции.

Что за фигня:
Написал простенький запрос к Аксесовской базе:

SELECT Изделия.*, Компоненты.*, Состав.*
FROM Изделия, Компоненты, Состав;
WHERE Изделия.ИЗД=Состав.ИЗД
AND Компоненты.КОМП=Состав.КОМП;

и выдало такую ошибку: Обнаружены символы за пределами инструкций SQL.
Но вот не вижу где ошибка. Ткните носом пожалуйста :))


Delirium^.Tremens ( 2003-01-13 15:58 ) [1]


Zz_ ( 2003-01-13 16:04 ) [2]

FROM Изделия, Компоненты, Состав ;

Читайте также:  Сигнализатор превышения скорости автомобиля


Whippi ( 2003-01-13 16:11 ) [3]

2Delirium^.Tremens:
Какие русские символы,пишу просто:
SELECT Изделия.*, Компоненты.*, Состав.*
FROM Изделия, Компоненты, Состав;
прокатывает, только добавляю:
WHERE Изделия.ИЗД=Состав.ИЗД
AND Компоненты.КОМП=Состав.КОМП;

Выдает:Обнаружены символы за пределами инструкций SQL.
2Zz_
> FROM Изделия, Компоненты, Состав ;

А у меня что?


stone ( 2003-01-13 16:13 ) [4]

после FROM Изделия, Компоненты, Состав не надо ставить ;


Whippi ( 2003-01-13 16:20 ) [5]

Блиииииииииин,
спасибо за науку, впредь акуратнее буду примеры сдирать :))

Добрый день.
На самостоятельное изучение дали тему "Применение параметров при реализации SQL-запросов". Программа должна реализовывать следующее:
* Добавлять записи в таблицу (INSERT)
* Удалять записи из таблицы (DELETE)
* Редактировать записи в таблице (UPDATE)
* Выдавать информацию о товарах из таблицы, которых на складе осталось меньше введённого количества.
И всё это исключительно с помощью параметров.
Таблица в БД у меня такая:
Поле IDCode (счётчик, первичный ключ)
Поле TovarName (текстовый)
Поле Price (числовой, двойное с плавающей точкой)
Поле Sklad (числовой, длинное целое)
Причём в методичке сказано что данные в неё вносить не нужно, это осуществится с помощью Дельфи, поэтому таблица пустая.
Ну а в Дельфи соответственно 4 ADOQuery, в каждом свои параметры.
Проблемы возникли уже на первой операции (INSERT). Параметры в запросе следующие:
* TName:
DataType — ftString
А вот Value он почему-то "не захотел" делать String, упорно ставит её OleStr. В этом я думаю и заключается проблема.
* Price:
DataType — ftFloat
Value "само по себе делается" Double и по-другому никак не хочет
* Sklad:
DataType — ftInteger
Value — Integer
В ADOQuery в свойстве SQL код:
INSERT INTO Table1 (TovarName, Price, Sklad)
Values( :TName, :Price, :Sklad);
Вот текст всей программы:
unit LAB7Unit1;

uses
Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms,
Dialogs, StdCtrls, Buttons, Grids, DBGrids, DB, ADODB;

type
TForm1 = class(TForm)
ADOConnection1: TADOConnection;
ADOQuery1: TADOQuery;
DataSource1: TDataSource;
DBGrid1: TDBGrid;
BitBtn1: TBitBtn;
BitBtn2: TBitBtn;
BitBtn3: TBitBtn;
Label1: TLabel;
Label2: TLabel;
Label3: TLabel;
Label4: TLabel;
Edit1: TEdit;
Edit2: TEdit;
Edit3: TEdit;
Label5: TLabel;
Edit4: TEdit;
BitBtn4: TBitBtn;
ADOQuery2: TADOQuery;
DataSource2: TDataSource;
ADOQuery3: TADOQuery;
DataSource3: TDataSource;
ADOQuery4: TADOQuery;
DataSource4: TDataSource;
Edit5: TEdit;
Label6: TLabel;
procedure BitBtn4Click(Sender: TObject);
procedure BitBtn1Click(Sender: TObject);
procedure BitBtn3Click(Sender: TObject);
procedure BitBtn2Click(Sender: TObject);
procedure FormCreate(Sender: TObject);
private
< Private declarations >
public
< Public declarations >
end;

var
Form1: TForm1;
X: integer;

procedure TForm1.BitBtn4Click(Sender: TObject); <инф-ия о товаре из табл.1, кот. на складе осталось меньше указанного кол-ва>
begin
ADOQuery1.Active:=false;
ADOQuery1.Parameters.ParamByName("NS").Value:=StrToInt(Edit4.Text);
ADOQuery1.Active:=true;
ADOQuery1.SQL.Add("SELECT * FROM Table1");
end;

procedure TForm1.BitBtn1Click(Sender: TObject); <Добавить записи в табл.1>
begin
ADOQuery2.Parameters.ParamByName("TName").Value:=Edit1.Text;
ADOQuery2.Parameters.ParamByName("Price").Value:=StrToFloat(Edit2.Text);
ADOQuery2.Parameters.ParamByName("Sklad").Value:=StrToInt(Edit3.Text);
ADOQuery2.ExecSQL;
ADOQuery2.SQL.Add("SELECT * FROM Table1");
end;

procedure TForm1.BitBtn3Click(Sender: TObject); <редактировать запись>
begin
ADOQuery3.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery3.Parameters.ParamByName("TName").Value:=Edit1.Text;
ADOQuery3.Parameters.ParamByName("Price").Value:=StrToFloat(Edit2.Text);
ADOQuery3.Parameters.ParamByName("Sklad").Value:=StrToInt(Edit3.Text);
ADOQuery3.ExecSQL;
ADOQuery3.SQL.Add("SELECT * FROM Table1");
end;

procedure TForm1.BitBtn2Click(Sender: TObject); <удалить запись>
begin
ADOQuery4.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery4.SQL.Add("SELECT * FROM Table1");
end;

procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery1.SQL.Add("SELECT * FROM Table1");
ADOQuery2.SQL.Add("SELECT * FROM Table1");
ADOQuery3.SQL.Add("SELECT * FROM Table1");
ADOQuery4.SQL.Add("SELECT * FROM Table1");
end;

end.
Запустила, вввела в Edit"ы наименование товара, цену, склад, нажимаю кнопку "Добавить" — прога вылетает с ошибкой "Обнаружены символы за пределами инструкции SQL". Ну а другие операции я даже проверить не могу пока эта не станет работать. (да и во всех остальных операциях наверняка накосячила)
Подскажите пожалуйста, как побороть эту ошибку?!


Sergey13 © ( 2010-10-15 16:19 ) [1]

> [0] Первокурсница © (15.10.10 15:53)

Вы совершенно справедливо пишете

> * Добавлять записи в таблицу (INSERT)
> * Удалять записи из таблицы (DELETE)
> * Редактировать записи в таблице (UPDATE)

Но что тогда означает

> procedure TForm1.FormCreate(Sender: TObject);
> begin
> ADOQuery1.SQL.Add("SELECT * FROM Table1");
> ADOQuery2.SQL.Add("SELECT * FROM Table1");
> ADOQuery3.SQL.Add("SELECT * FROM Table1");
> ADOQuery4.SQL.Add("SELECT * FROM Table1");
> end;

Почему запросы одинаковые? И где в них по вашему параметры, с которыми вам необходимо работать?

> procedure TForm1.BitBtn4Click(Sender: TObject); <инф-ия о товаре из табл.1, кот. на складе осталось меньше указанного кол-ва>
> begin
> ADOQuery1.Active:=false;
> ADOQuery1.Parameters.ParamByName("NS").Value:=StrToInt(Edit4.Text);
> ADOQuery1.Active:=true;
> ADOQuery1.SQL.Add("SELECT * FROM Table1");
> end;
Можете по русски объяснить — что вы тут делаете в каждой строке?


Первокурсница © ( 2010-10-15 17:02 ) [2]

С procedure TForm1.FormCreate разобралась. Просто нужно было чтобы результаты операции сразу же возникали в DBGrid (в методичке сказано вызывать эту процедуру при создании формы и сразу же после запросов INSERT,DELETE,UPDATE), поместила ещё один "вспомогательный" ADOQuery, получилось:
procedure TForm1.FormCreate(Sender: TObject);
begin
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
end;
Вылетать с ошибкой перестало. Процедура INSERT работает корректно:)
Но не работают процедуры DELETE и UPDATE:(
В процедуре DELETE нужно ввести ID_Code товара в Edit, нажать кнопку и товар должен исчезнуть. В ADOQuery отвечающем за эту процедуру SQL код:
DELETE FROM Table1
WHERE IDCode=:ID_Code;
Параметр в этом запросе один:
ID_Code:
DataType — ftInteger
Value — Integer
Процедура:
procedure TForm1.BitBtn2Click(Sender: TObject); <удалить запись>
begin
ADOQuery4.Active:=false;
ADOQuery4.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery4.Active:=true;
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
ADOQuery5.Open;
end;
Но вылетает с ошибкой "Текущий проводник не поддерживает возврат нескольких наборов записей в результате одной операции".
А в процедуре UPDATE нужно опять же ввести в Edit ID_Code товара, внести в соответствующие Edit"ы наименование товара, цену и количество его на складе, нажать кнопку "Изменить" и радоваться результатам. Но результатов-то как раз-таки и нету:(
В ADOQuery отвечающем за эту процедуру SQL код:
UPDATE Table1 SET (:TName, :Price, :Sklad)
WHERE IDCode=:ID_Code;
Параметры в этом запросе:
ID_Code
DataType — ftInteger
Value — Integer

Читайте также:  Поиск минимума в массиве паскаль

TName
DataType — ftString
Value — OleStr

Price
DataType — ftFloat
Value — Double

Sklad
DataType — ftInteger
Value — Integer

Процедура:
procedure TForm1.BitBtn3Click(Sender: TObject); <редактировать запись>
begin
ADOQuery3.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery3.Parameters.ParamByName("TName").Value:=Edit1.Text;
ADOQuery3.Parameters.ParamByName("Price").Value:=StrToFloat(Edit2.Text);
ADOQuery3.Parameters.ParamByName("Sklad").Value:=StrToInt(Edit3.Text);
ADOQuery3.ExecSQL;
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
AdoQuery5.Open;
end;
Ошибка — "Ошибка синтаксиса в инструкции UPDATE".

А та процедура про которую Вы спрашивали тоже к счастью работает корректно, её не нужно исправлять:)
Не судите строго, я же только учусь, понятное дело что для опытного профессионала мои потуги кажутся глупыми, смешными, но что взять со студентки, увы я не мастер Дельфи:)


Плохиш © ( 2010-10-15 17:30 ) [3]


> Первокурсница © (15.10.10 15:53)

Ни в одном показанном запросе параметров нет.
В коде много SQL.Add и нет SQL.Clear. Запросы кто за вас чистить должен, Пушкин?

> Не судите строго, я же только учусь

Враньё, нифига вы не учитесь, накопировали дерьмокода откуда-то бездумно.


Первокурсница © ( 2010-10-15 17:47 ) [4]

О, если бы нашла бы я такое место откуда коды бы можно было бы копировать бездумно. ах мечты мечты:) К сожалению, весь этот "дерьмокод" как вы выразились я написала сама. SQL.Clear добавила. "Параметры" ставила точь-в-точь так как указано в методичке.


Sergey13 © ( 2010-10-15 17:48 ) [5]

> [2] Первокурсница © (15.10.10 17:02)
> Процедура INSERT работает корректно:)

Серьезно? Вы шутите?

> В процедуре DELETE нужно ввести ID_Code товара в Edit, нажать
> кнопку и товар должен исчезнуть. В ADOQuery отвечающем за
> эту процедуру SQL код:
> DELETE FROM Table1
> WHERE IDCode=:ID_Code;
Код правильный. И куда вы его записали?

> Параметр в этом запросе один:
> ID_Code:
> DataType — ftInteger
> Value — Integer
Это тоже правильно.

Дальше можете описать полет своей мысли облеченный в код?
> Процедура:
> procedure TForm1.BitBtn2Click(Sender: TObject); <удалить запись>
> begin
> ADOQuery4.Active:=false;
> ADOQuery4.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
> ADOQuery4.Active:=true;
> ADOQuery5.SQL.Text:="SELECT * FROM Table1";
> ADOQuery5.Open;
> end;


Первокурсница © ( 2010-10-15 17:59 ) [6]

Серьёзно:)
DELETE FROM Table1
WHERE IDCode=:ID_Code;
Это я записала в свойство SQL компонента ADOQuery с помощью редактора SQL-скрипта.
procedure TForm1.BitBtn2Click(Sender: TObject); <удалить запись>
begin
ADOQuery4.Active:=false;
ADOQuery4.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery4.Active:=true;
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
ADOQuery5.Open;
end;
Это записано в обработчик события OnClick соответствующей кнопки.
ADOQuery4.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
Здесь происходит передача введённого АйДи-кода товара из компонента ввода Edit4 в параметр :ID_Code компонента ADOQuery4.
ADOQuery4.Active:=true; ъ
Здесь запускается выполнение запроса с параметром.
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
ADOQuery5.Open;
Это процедура просмотра содержимого всех полей таблицы, которую (как приказывает методичка) необходимо вставлять в конце запросов INSERT,DELETE,UPDATE.


Первокурсница © ( 2010-10-15 18:00 ) [7]

Edit5 то есть, а не Edit4. Очепятка)


Первокурсница © ( 2010-10-15 18:05 ) [8]

ADOQuery4.ExecSQL;
вместо
ADOQuery4.Active:=true;
С этим разобралась.


Anatoly Podgoretsky © ( 2010-10-15 19:10 ) [9]

> Первокурсница (15.10.2010 15:53:00) [0]

Для начало надо указать в какой строке возникает ошибка.


Первокурсница © ( 2010-10-15 19:20 ) [10]

Теперь осталась одна проблема — с UPDATE.
В SQL написан код:
UPDATE Table1 SET (:TName, :Price, :Sklad)
WHERE IDCode=:ID_Code;
Параметры
ID_Code
DataType — ftInteger
Value — Integer
TName
DataType — ftString
Value — OleStr
Price
DataType — ftFloat
Value — Double
Sklad
DataType — ftInteger
Value — Integer
Процедура:
procedure TForm1.BitBtn3Click(Sender: TObject); <редактировать запись>
begin
ADOQuery3.Parameters.ParamByName("ID_Code").Value:=StrToInt(Edit5.Text);
ADOQuery3.Parameters.ParamByName("TName").Value:=Edit1.Text;
ADOQuery3.Parameters.ParamByName("Price").Value:=StrToFloat(Edit2.Text);
ADOQuery3.Parameters.ParamByName("Sklad").Value:=StrToInt(Edit3.Text);
ADOQuery3.ExecSQL;
ADOQuery5.SQL.Text:="SELECT * FROM Table1";
AdoQuery5.Open;
end;
Ошибка — "Ошибка синтаксиса в инструкции UPDATE".
Подсвечивает строку ADOQuery5.SQL.Text:="SELECT * FROM Table1";
Ошибка ведь наверняка в UPDATE Table1 SET. какую-нибудь запятую или скобки я там не дописала(


Anatoly Podgoretsky © ( 2010-10-15 19:33 ) [11]

> Первокурсница (15.10.2010 19:20:10) [10]

ПОпробуй выполнить SELECT сразу после бегин


Первокурсница © ( 2010-10-15 19:38 ) [12]

UPDATE Table1 SET TovarName=:TName, Price=:Price, Sklad=:Sklad
WHERE IDCode=:ID_Code;

Случайно пришло в голову и оказалось правильно)
Всем спасибо за участие!

Ссылка на основную публикацию
Нью йорк город контрастов цитата
Brilliantovaya ruka (СССР, 1968 г.) Комедия Реж.: Леонид Гайдай В ролях: Юрий Никулин, Андрей Миронов, Анатолий Папанов, Нина Гребешкова, Станислав...
Не устанавливается ватсап на планшет леново
Lenovo на сегодняшний день являются одним из самых распространенных видов мобильных девайсов у пользователей. Из-за этого многие хотят знать, как...
Не устанавливается windows xp синий экран
Просмотров: 208 853 Автор: admin Дата: 11-06-2011 Не устанавливается Windows XP процесс установки прерывается в самом начале и сопровождается появлением...
О типе информации хранящейся в файле
Входной контроль за 9 класс 1. Информацию, не зависящую от чьего-либо мнения или суждения, называют: а) достоверной; б) актуальной; в)...
Adblock detector