|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
Проблема с заполнением таблицы
Суть проблемы в этой ошибке
Я не могу понять, зачем он пытается конвертировать в Double, ведь я не где его это не прошу делать. В таблице тоже ни где не используется Double.Ниже код программы... Код:
unit Unit4; interface uses Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics, Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Vcl.ExtCtrls, Vcl.DBCtrls, Vcl.StdCtrls, Vcl.Grids, Vcl.DBGrids, Data.DB, Data.Win.ADODB; type TForm4 = class(TForm) Button1: TButton; Button2: TButton; Button3: TButton; ADOQuery1: TADOQuery; DBGrid1: TDBGrid; ADOQuery2: TADOQuery; DBGrid2: TDBGrid; DataSource1: TDataSource; DataSource2: TDataSource; Edit1: TEdit; ADOConnection1: TADOConnection; procedure Button1Click(Sender: TObject); procedure Button3Click(Sender: TObject); private { Private declarations } public { Public declarations } end; var Form4: TForm4; i,sum:integer; s:real; implementation {$R *.dfm} uses Unit1, Unit2, Unit3; procedure TForm4.Button1Click(Sender: TObject); begin close; end; procedure TForm4.Button3Click(Sender: TObject); begin Form2.DBGrid1.DataSource.DataSet.First; S := 0; while not Form2.DBGrid1.DataSource.DataSet.Eof do begin S := S + Form2.DBGrid1.DataSource.DataSet.FieldByName('обед').Value; Form2.DBGrid1.DataSource.DataSet.Next; end; Form2.DBGrid1.DataSource.DataSet.First; S := 0; while not Form2.DBGrid1.DataSource.DataSet.Eof do begin S := S + Form2.DBGrid1.DataSource.DataSet.FieldByName('завтрак').Value; Form2.DBGrid1.DataSource.DataSet.Next; end; ADOQuery2.SQL.Clear; ADOQuery2.SQL.Add('SELECT * FROM Продукты'); ADOQuery2.Active:=true; while not DBGrid2.DataSource.DataSet.Eof do begin ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('INSERT INTO на_заказ(код_продукта,подкод_продукта,наименование_продукта,количество) VALUES('+ DBGrid2.DataSource.DataSet.FieldByName('код').Value +'","' + DBGrid2.DataSource.DataSet.FieldByName('подкод').Value + '","' + DBGrid2.DataSource.DataSet.FieldByName('название').Value + '","' + DBGrid2.DataSource.DataSet.FieldByName('грамм_на_порцию').Value + '")'); ADOQuery1.ExecSQL; DBGrid2.DataSource.DataSet.Next; end; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM на_заказ'); ADOQuery1.Active:=True; end; end. |
#2
|
||||
|
||||
Код:
DBGrid2.DataSource.DataSet.FieldByName(...).Value — Как тебя понимать? — Понимать меня не обязательно. Обязательно меня любить и кормить вовремя. На Delphi, увы, больше не программирую. Рекомендуемая литература по программированию |
#3
|
|||
|
|||
В строках 51 и 57 Value преобразуется в real и складывается с S
|
#4
|
||||
|
||||
Похоже бред какой-то в коде, циклы крутятся, а результат в пустоту утекает, можно обращение к полям совместить в один забег, а ещё лучше применить агрегирующую конструкцию типа SELECT SUM(Поле) FROM...
Я не понял Вашего вопроса, но всё же Вам на него отвечу! |