|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
SQL запрос в Delphi 7
Здравствуйте!
У меня есть одна проблема с которой давно уже не могу разобраться. Почему то ни где ничего похожего не встречал ... Помогите пожалуйста разобраться с кодом. Где моя ошибка? Во время компиляции выходит сообщение: Project Forma.exe raised exeption class EDatabaseError with messahe 'Query1: Field 'Name' not found'. Process stopped. Use Step or Run to continue. Я со вчерашнего дня не могу решить эту проблему. В компонентах Table, Query1, Query2 прописал все поля (Name, Kod, Line, A1, A2, A3, A4, Par, Lev, ID). Открываю SQL Explorer пишу SELECT * FROM ATABLE выходит вся таблица. Вот код: {даже ShowMessage('YES'); не выходит((} Код:
var Form1: TForm1; i, j: integer; implementation {$R *.dfm} procedure TForm1.FormCreate(Sender: TObject); begin Table1.Open; end; procedure TForm1.Button1Click(Sender: TObject); var i, j:integer; begin for i:=3 downto 1 do begin Query1.Close; Query1.SQL.Clear; Query1.SQL.Text:='SELECT SUM (A1) AS ASUM, PAR, LEV FROM ATABLE WHERE LEV = :LEV GROUP BY PAR, LEV ORDER BY LEV, PAR'; Query1.Params[0].AsInteger := i; Query1.Open; ShowMessage('YES'); end; for j := 1 to query1.recordcount do begin ShowMessage('TUTTO'); Query2.sql.text := 'UPDATE ATABLE SET A1=' + query1.FieldByName('ASUM').AsString + ' WHERE ID= :ID'; Query2.Params[0].AsString := query1.FieldByName('PAR').AsString; Query2.ExecSQL; Query1.Next; end; end; Программа предназначена для автоматического подсчета. Есть форма, столбцов в ней больше, но если я разберусь с одним остальное работает точно так же! Разделил я на 3 уровня потому что именно так должно быть в итоговом отчете. Таблица где первая запись (уровень 0) итог, (далее уровень 1) к которому относятся (ур2) и (ур3). На пример: 1 Итог (ур 0) 2 Выплата Зарплат (ур 1) 3 Зарплата (ур 2) 4 Штатных раб-ков (ур 3) 5 Внештатных ... (ур 3) 6 Доп-ые перечисления (ур 3) 7 Добавка (ур 3) 8 Надбавка к з/п (ур 2) 9 Перечисления в фонд (ур 3) 10 Гос. страх-ие (ур 3) и т.д. Сумма (7,6,5,4) должны сесть в (3), сумма (10,9) в (Крутой далее сумма (8,3) в (1) таких записей около 200 (в принципе не много) после суммирования всех уровней №1 получается итог который записывается в (ур 0) потом распечатка. Дело в том что я новичок, изучаю самостоятельно, давно уже ломаю голову над этим, сложно ... Я в начале сделал примитивно т.е. для каждого уровня отдельно таблицу, все работало. Хочу сделать нормально. Последний раз редактировалось Admin, 12.04.2009 в 13:02. |
#2
|
||||
|
||||
Поскольку грубых ошибок в коде я неувидел, могу предположить, что проблема в настройках визуальных компонентов, скорее всего в одном из квери на форме есть неправильное поле. Попробуйте для всех квери на форме провести генеральную чистку полей.
Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |
#3
|
|||
|
|||
Теперь новая проблемма ...
Большое спасибо Страдалецъ!
Я очистил список полей в Query1 и Query2, теперь половина программы работает, но появляется другая ошибка! Курсор останавливается на Query1.Next; По идее Query2 должен вставлять вычисленное значение в базу но этого не происходит((( |
#4
|
||||
|
||||
Поставьте точку останова на Query2.ExecSQL; и посмотрите правильно ли у вас сформировался запрос в Query2.sql.text
У меня есть подозрение, что передаваемый вами параметр имеет неверный тип. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. |