Поиск:

Ответ в темуСоздание новой темы Создание опроса
> Параметры в Adoquery 
:(
    Опции темы
Zerony
Дата 15.10.2010, 20:27 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Шустрый
*


Профиль
Группа: Участник
Сообщений: 89
Регистрация: 21.12.2008

Репутация: нет
Всего: нет



Добрый день!
На самостоятельное изучение дали тему "Применение параметров при реализации 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;

interface

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;

implementation

{$R *.dfm}

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". Ну а другие операции я даже проверить не могу пока эта не станет работать...
PM MAIL   Вверх
Данкинг
Дата 15.10.2010, 22:10 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: 35
Всего: 130



Цитата(Zerony @  15.10.2010,  21:27 Найти цитируемый пост)
В ADOQuery в свойстве SQL код:

Не пиши ничего подобного в конструкторе, пиши все свои параметры непосредственно в коде. Кстати, раздел "сети"-то при чём? smile 



--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
  
Ответ в темуСоздание новой темы Создание опроса
Правила форума "Delphi: Базы данных и репортинг"
Vit
Петрович

Запрещено:

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами


Обязательно указание:

1. Базы данных (Paradox, Oracle и т.п.)

2. Способа доступа (ADO, BDE и т.д.)


  • Литературу по Дельфи обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • 90% ответов на свои вопросы можно найти в DRKB (Delphi Russian Knowledge Base) - крупнейшем в рунете сборнике материалов по Дельфи
  • Вопросы по SQL и вопросы по базам данных не связанные с Дельфи задавать здесь

FAQ раздела лежит здесь!


Если Вам помогли и атмосфера форума Вам понравилась, то заходите к нам чаще! С уважением, Vit, Петрович.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | Delphi: Базы данных и репортинг | Следующая тема »


 




[ Время генерации скрипта: 0.0882 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.