Форум программистов
 

Восстановите пароль или Зарегистрируйтесь на форуме, о проблемах и с заказом рекламы пишите сюда - alarforum@yandex.ru, проверяйте папку спам!

Вернуться   Форум программистов > IT форум > Помощь студентам
Регистрация

Восстановить пароль
Повторная активизация e-mail

Купить рекламу на форуме - 42 тыс руб за месяц

Ответ
 
Опции темы Поиск в этой теме
Старый 22.04.2011, 09:19   #1
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию Создание вычисляемого поля SQl Delphi

Здравствуйте, есть БД в формате .mdb через компонент ADOConnection, используемая в приложении Delphi, в таблице есть поля [ФИО сборщика], [дата сдачи], [пункт приема №], [вес лома], [цена за 1кг], с помощью SQl запроса необходимо создать вычисляемое поле, которое будет отображать сумму полученную конкретным сборщиком ([вес лома] * [цена за 1кг]), для этого на форме я разместил Edit (для ввода ФИО сборщика) и Button. Вот процедура для Button
Код:
procedure TForm1.Button1Click(Sender: TObject);
begin
     ADOQuery2.Close;
     ADOQuery2.SQL.Text := 'SELECT [ФИО сборщика], [дата сдачи], [пункт приема №], [вес лома], [цена за 1кг], [вес лома*цена за 1кг] FROM Table_2 WHERE Table_2.[ФИО сборщика]=:User;';
     ADOQuery2.Parameters.ParamByName('User').Value:=Edit1.Text;
     ADOQuery2.Open;
end;
Выводится ошибка 'Отсутствуют значения для одного или нескольких параметров'. Подскажите, пожалуйста, как правильно создать вычисляемое поле?
P.S. Поля [вес лома*цена за 1кг] соответственно в исходной таблице нет, насколько я понял из прочитанного, до обновления, ну то есть на время пока организован запрос будет создано это поле(столбец), куда будут записаны вычисляемые значения. Т.е. насколько я понял, и в таблице в компоненте DBGrid, будет создан временный столбец, куда будут запианы вычисляемые значения.Спасибо.

Последний раз редактировалось detalik; 22.04.2011 в 09:26.
detalik вне форума Ответить с цитированием
Старый 22.04.2011, 09:43   #2
fbus
Форумчанин
 
Аватар для fbus
 
Регистрация: 23.10.2008
Сообщений: 460
По умолчанию

Цитата:
=:User;
что-то я не помню в sql оператора :=
есть = и ==
fbus вне форума Ответить с цитированием
Старый 22.04.2011, 09:46   #3
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

попробуйте так написать:
Код:
'SELECT [ФИО сборщика], [дата сдачи], '+
'  [пункт приема №], [вес лома], [цена за 1кг], '+
'  [вес лома]*[цена за 1кг] as GetSumma FROM ........
поле GetSumma - есть требуемая вам полученная сумма!
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2011, 09:47   #4
was3110
Форумчанин
 
Аватар для was3110
 
Регистрация: 25.04.2010
Сообщений: 254
По умолчанию

Код:
SELECT [ФИО сборщика], [дата сдачи], [пункт приема №], [вес лома], [цена за 1кг], [вес лома]*[цена за 1кг] AS Стоимость  FROM ...
И на время отладки значение параметра прописывайте в запросе, что бы исключить возможность второй ошибки.
помогать студентам - моя вторая профессия

Последний раз редактировалось was3110; 22.04.2011 в 09:52.
was3110 вне форума Ответить с цитированием
Старый 22.04.2011, 10:32   #5
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Код:
'+
А что это за плюсик?
detalik вне форума Ответить с цитированием
Старый 22.04.2011, 11:44   #6
Serge_Bliznykov
Старожил
 
Регистрация: 09.01.2008
Сообщений: 26,238
По умолчанию

Цитата:
Сообщение от detalik Посмотреть сообщение
Код:
'+
А что это за плюсик?
а на это внимания можете не обращать!
Просто я для удобства и наглядности разбил строчку на несколько..
ну вместо 'xxxxxxxx....xxxx';
написал:
'xxx' + 'xxxx'+ ... 'xxx';
не люблю, когда правая граница кода улетает за километр...
Serge_Bliznykov вне форума Ответить с цитированием
Старый 22.04.2011, 13:33   #7
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

Спасибо большое, получилось, но не так как я предполагал, вот код
Код:
ADOQuery2.SQL.Text := 'SELECT [ФИО сборщика], [дата сдачи], [пункт приема №], [вес лома], [цена за 1кг], [вес лома]*[цена за 1кг] AS Стоимость FROM Table_2 WHERE Table_2.[ФИО сборщика]=:User;'
Если я предварительно в DBGrid создам пустое поле "стоимость", то все работает, считает и выводит сумму.
В противном случае он выводит мне все остальные поля, кроме Стоимости, т.е не создает столбец.
Почему? Спасибо.
detalik вне форума Ответить с цитированием
Старый 22.04.2011, 15:56   #8
detalik
Форумчанин
 
Регистрация: 05.04.2011
Сообщений: 115
По умолчанию

И все-таки непонятно, почему не создается вычисляемое поле
detalik вне форума Ответить с цитированием
Старый 25.04.2011, 14:48   #9
OlegVE
Форумчанин
 
Регистрация: 27.09.2010
Сообщений: 376
По умолчанию

Здравствуйте
По идее, если в DBGrid жестко определён список выводимых столбцов (Columns->Add New...), то вычисленное поле Стоимость не будет выводиться, если не добавить его в этот список.
Если у Вас не создан этот список в DBGrid, то должно выводиться всё, в том числе и Стоимость...
До свидания
P.S. пятн.-воскр. на форуме не бываю.
OlegVE вне форума Ответить с цитированием
Ответ


Купить рекламу на форуме - 42 тыс руб за месяц

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск


Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
Создание вычисляемого пути gvidofd БД в Delphi 1 28.05.2010 12:51
Сохранить значение вычисляемого поля Nika03 БД в Delphi 8 10.05.2010 22:17
Сумма вычисляемого поля TTable Anton.sev Общие вопросы Delphi 1 10.05.2010 20:31
Изменение вычисляемого поля в коде Земляника БД в Delphi 5 04.06.2009 19:35
Изменение вычисляемого поля в коде Земляника SQL, базы данных 0 04.06.2009 10:02