![]() |
|
|
Регистрация Восстановить пароль |
Регистрация | Задать вопрос |
Заплачу за решение |
Новые сообщения |
Сообщения за день |
Расширенный поиск |
Правила |
Всё прочитано |
![]() |
|
|
Опции темы | Поиск в этой теме |
![]() |
#1 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Сразу начну с того в чем суть моей проблемы: никак не получается сделать выборку данных из базы. Использую стандартный набор компонентов: DBGrid, Table, DataSource и Query. Связи между ними настроены и проверены, загвостка заключается в том что никак не получается запустить эту выборку! Мне надо, чтобы запрос формировался с добавлением параметра из компонента Edit... Пробовал писать в обработчике кнопки следующее:
Query1.SQL.Add('select NomerZhVD from Dispetcher where nomerZhVD=Edit1.Text'); и еще: Query1.SQL.Add('select NomerZhVD from Dispetcher where nomerZhVD=' + chr(39) +Edit1.Text + chr(39) ); , компилятор выдает ошибки: Query1: No SQL statment available и Insufficient memory for this operation. Alias: ZhUDPD_S'. Может ошибка заключается в связях между компонентами или в тексте SQL-запроса, если кто знает в чем здесь дело, напишите... |
![]() |
![]() |
![]() |
#2 |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]()
текст SQL запроса можно проверить на частном случае, т.е. пишешь не Edit1.Text, а какое-либо значение вписываешь, т.е. пишешь:
Query1.SQL.Add('select NomerZhVD from Dispetcher where nomerZhVD="йа запрос"'); если работает, то меняешь на: Query1.SQL.Add('select NomerZhVD from Dispetcher where nomerZhVD="'+Edit1.Text+'"'); хотя в данном случае лучше использовать параметры, т.е. пишешь: Query1.SQL.Add('select NomerZhVD from Dispetcher where nomerZhVD=:nomer'); и у Query1.ParamByName('nomer').Value := Edit1.Text |
![]() |
![]() |
![]() |
#3 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
С частным случаем прокатило вроде, а можно еще сделать так, чтобы с одной базой данных были связаны по два DBgrid, DataSource и Table, но первая тройка служила просто для отображения данных, а вторая выводила результаты SQL-запроса?
|
![]() |
![]() |
![]() |
#4 | |
Старожил
Регистрация: 22.05.2007
Сообщений: 9,091
|
![]() Цитата:
![]() |
|
![]() |
![]() |
![]() |
#5 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Этоя тоже разрулил, мне надо было, чтобы у меня на форме располагались 2 DBGird, оба связанные с одной базой, но только первый из них должен просто отображать данные, а второй отображать те данные, которые я вытаскиваю с помощью SQL-запроса, ну это для наглядности... Что касается самих SQL-запросов, при их выполнении с частными значениями, все хорошо, но когда я питаюсь заменить частное значение записью типа "+Edit1.Text+", заспрос как бы выполняется, но данные во вотрой DBGrid не отображаются, хотя все необходимые названия полей высвечеваются... В чем тут дело?
|
![]() |
![]() |
![]() |
#6 | |
*
Старожил
Регистрация: 22.11.2006
Сообщений: 9,201
|
![]() Цитата:
DataSource1 - DataSet:=Table1; DBGrid2 - DataSource:=DataSource2; DataSource2 - DataSet:=Query1; Query1.Open; !!! А не Query1.ExecSQL !!! |
|
![]() |
![]() |
![]() |
#7 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Просто переписал часть SQL-запроса и убрал один ', теперь все работает!
Обработчик для кнопки и сам запрос выглядят теперь так: Query1.Active:=False; Query1.SQL.Clear; Query1.SQL.Add('select * from Dispetcher where NomerZhVD=' + chr(39) + Edit1.Text + chr(39)); Query1.SQL.Text; Query1.Active:=True; Особое спасибо pu4koff! |
![]() |
![]() |
![]() |
#8 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Добрался наконец-то до отчетных форм, проинсталировал Qreport, настроил связи между компонентами, связал с базой данных, вроде все нормально... Но дальше становится интересно, при предварительном просмотре отчета с помощью пункта Preview контекстного меню QuickRep'а, отчет выводится так как надо, но при попытке его сформировать в запущенной программе, выдается сообщение об ошибке:
Project Project1.exe raised exception class EAccessViolation with message 'Access violation at adress 004F72BC in module 'Project1.exe'. Read adress 00000304'. Process stopped.Use Step or Run to continue. Правда это в том случае, если я пытаюсь использовать процедуру: procedure TForm11.Create(Sender: TObject); begin Quickrep1.Preview; end; Какие есть еще варианты, того как сделать так, чтобы предварительный просмотр активировался автоматически? Последний раз редактировалось Nomad; 17.10.2007 в 11:27. |
![]() |
![]() |
![]() |
#9 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Разобрался и с этой проблемой
![]() ![]() ![]() |
![]() |
![]() |
![]() |
#10 |
Пользователь
Регистрация: 08.10.2007
Сообщений: 22
|
![]()
Эх
![]() ![]() ![]() ![]() Последний раз редактировалось Nomad; 28.11.2007 в 19:46. |
![]() |
![]() |
![]() |
|
![]() |
||||
Тема | Автор | Раздел | Ответов | Последнее сообщение |
Программа-тест в Delphi) скиньте))а то програмку здавать преподу надо,и самой хочется понять Delphi | Верчик | Помощь студентам | 9 | 02.03.2009 17:46 |
Delphi. Как нарисовать в Delphi два движущиеся шара с определенной скоростью? | redred | Общие вопросы Delphi | 10 | 11.12.2007 10:43 |
Как открыть БД, написанную в Delphi если нf другой машине Delphi нет? | dagarik | БД в Delphi | 7 | 22.10.2007 17:54 |