Форум программистов, компьютерный форум, киберфорум
Delphi: Базы данных
Войти
Регистрация
Восстановить пароль
Блоги Сообщество Поиск Заказать работу  
 
Рейтинг 4.76/21: Рейтинг темы: голосов - 21, средняя оценка - 4.76
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 30

Перемещение по записям, query и DBGrid

03.06.2014, 15:57. Показов 4164. Ответов 7
Метки нет (Все метки)

Студворк — интернет-сервис помощи студентам
Привет всем!

На форме есть 2 Grid'a. В Grid1 выводится набор данных из qry2.(Эта часть работает).
Далее нужно в Grid2 вывести набор данных из qry3(который каждый раз изменяется, при изменении положения курсора в Grid1). Для этого пытаюсь использовать AfterScroll.
При выполнении ошибка.
Правильно ли написан запрос, и вообще корректно ли использовать AfterScroll в данной ситуации?

Delphi
1
2
3
4
5
6
7
8
9
procedure TfDM.qry2AfterScroll(DataSet: TDataSet);
begin
  fDM.Qry3.Close;
  fDM.Qry3.SQL.Clear;
  fDM.Qry3.SQL.Add('select  Оборот_чек.код_чека, Оборот_чек.штрих_код, Оборот_чек.кол_во, Виды_товаров.название_вида_товара, Фирмы.название_фирмы, Склад.название_товара, Склад.описание_товара From Оборот_чек, Виды_товаров, Фирмы, Склад Where Оборот_чек.код_чека= '+quotedstr(Trim(Form9.DBGrd1.DataSource.DataSet.Fields[0].AsString))+';');
  fDM.Qry3.open;
  fdm.DSVoz_chek.DataSet:=FDM.qry3;
  FORM9.dbgrd2.DataSource:=fdm.DSVoz_chek;
end;
0
Programming
Эксперт
39485 / 9562 / 3019
Регистрация: 12.04.2006
Сообщений: 41,671
Блог
03.06.2014, 15:57
Ответы с готовыми решениями:

Как сделать поиск по записям через RadioButton в DBgrid?
Здравствуйте. Возникла такая задача. Нужно умудрится сделать поиск через radiobutton'ы в dbgrid. На форме есть сам DBgrid, подключенный...

Несколько Query к одному DBGrid
Здравствуйте, уважаемые форумчане! Нуждаюсь в вашей подсказке. Мне необходимо реализовать подобное приложение как на скриншоте (в рамках...

суму столбца Query и Dbgrid
Нада помощи профи. У меня есть база даних Dbgrid, Data Source, Query. Нужно вычислить суму столбца при нажатии на кнопку ...

7
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
03.06.2014, 15:59
Цитата Сообщение от Sergey_Chizhov Посмотреть сообщение
При выполнении ошибка.
Текст сообщения об ошибке -- военная тайна?
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 30
03.06.2014, 16:19  [ТС]
Цитата Сообщение от quwy Посмотреть сообщение
Текст сообщения об ошибке -- военная тайна?
Project myProject.exe raised exception class EAccessViolation with message'Access violation at address 004BB16F in module 'myProject.exe'. Read of address 00000030'. Process stopped. Use Step or Run to continue.

Добавлено через 4 минуты
quwy, и стрелка на строчке с запросом.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
03.06.2014, 16:41
Вне AfterScroll этот код работает?

Скорее всего что-то в этой цепочке равно nil:
Delphi
1
Form9.DBGrd1.DataSource.DataSet
0
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 30
03.06.2014, 17:09  [ТС]
quwy, немного подправил запрос, на кнопке код работает исправно:
Delphi
1
2
3
4
5
6
7
8
9
10
11
12
procedure TForm9.btn4Click(Sender: TObject);
begin
  if not dbgrd1.DataSource.DataSet.IsEmpty then
  begin
    fDM.Qry3.Close;
    fDM.Qry3.SQL.Clear;
    fDM.Qry3.SQL.Add(select  Оборот_чек.код_чека, Оборот_чек.штрих_код, Оборот_чек.кол_во, Виды_товаров.название_вида_товара, Фирмы.название_фирмы, Склад.название_товара From Оборот_чек, Виды_товаров, Фирмы, Склад Where (Оборот_чек.код_чека= '+Trim(Form9.DBGrd1.DataSource.DataSet.Fields[0].AsString) +') and (Склад.код_вида_товара = Виды_товаров.код_вида_товара) and (Склад.код_фирмы = Фирмы.код_фирмы) and (Оборот_чек.штрих_код = Склад.штрих_код) ;');
    fDM.Qry3.open;
    fdm.DSVoz_chek.DataSet:=FDM.qry3;
    FORM9.dbgrd2.DataSource:=fdm.DSVoz_chek;
  end;
end;
Мне не очень понятно, как работает AfterScroll. Поясните пожалуйста.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
03.06.2014, 17:37
Цитата Сообщение от Sergey_Chizhov Посмотреть сообщение
Мне не очень понятно, как работает AfterScroll. Поясните пожалуйста.
Это событие возникает после открытия датасета и после перехода на другую запись. Если в кнопке работает, но и тут должно работать.
1
1 / 1 / 0
Регистрация: 21.09.2013
Сообщений: 30
03.06.2014, 18:03  [ТС]
quwy, спасибо. Заработало. Я открывал датасет раньше, чем привязывал его к Grid'у.
0
Native x86
Эксперт Hardware
 Аватар для quwy
6858 / 3791 / 1025
Регистрация: 13.02.2013
Сообщений: 11,861
03.06.2014, 22:57
Цитата Сообщение от Sergey_Chizhov Посмотреть сообщение
Я открывал датасет раньше, чем привязывал его к Grid'у.
К гриду его нужно привязать один раз в дизайнере форм, вот это совершенно лишнее:
Delphi
1
2
fdm.DSVoz_chek.DataSet:=FDM.qry3;
FORM9.dbgrd2.DataSource:=fdm.DSVoz_chek;
Если бы так было сделано изначально, данный вопрос просто не возник бы.
0
Надоела реклама? Зарегистрируйтесь и она исчезнет полностью.
inter-admin
Эксперт
29715 / 6470 / 2152
Регистрация: 06.03.2009
Сообщений: 28,500
Блог
03.06.2014, 22:57
Помогаю со студенческими работами здесь

Добавление записи в dbgrid через query
На форму поместил компоненты dbgrid, button, datasource, query....при помощи кнопки нужно добавить запись в dbgrid, но возникает ошибка...

Раскраска DbGrid который связан с Query
Вообщем вот в чем вопрос =) Как окрасить DbGrid , если в нем отображается Query... Квери соединяет главную таблицу со справочниками. ...

При переходе по записям одного из DbGrid-ов отображать только связанные с текущей записью данные во втором
На форме есть 2 элемента DBGrid, нужно, чтобы при переходе по строкам одного из них (основного) в другом (дочернем) отображались только те...

Связывание двух dbgrid с одной таблицей, а затем одного query с ними
Есть таблица, в ней данные, которые надо вывести в два разных грида. Для вывода в каждый я создал по компоненте TTable, и прописал в каждом...

Удаление записей через DBGrid. Выдает ошибку - Query CommandText does not return a result set
Таблица подключена, запрос delete * from Списание where Причина_списания = :поломка При включении на Query Active:=True появляется...


Искать еще темы с ответами

Или воспользуйтесь поиском по форуму:
8
Ответ Создать тему
Новые блоги и статьи
SDL3 для Web (WebAssembly): Синхронизация спрайтов SDL3 и тел Box2D
8Observer8 04.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-sync-physics-sprites-sdl3-c. zip На первой гифке отладочные линии отключены, а на второй включены:. . .
SDL3 для Web (WebAssembly): Идентификация объектов на Box2D v3 - использование userData и событий коллизий
8Observer8 02.03.2026
Содержание блога Финальная демка в браузере. Итоговый код: finish-collision-events-sdl3-c. zip https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11680&d=1772460536 Одним из. . .
Реалии
Hrethgir 01.03.2026
Нет, я не закончил до сих пор симулятор. Эта задача сложнее. Не получилось уйти в плавсостав, но оно и к лучшему, возможно. Точнее получалось - но сварщиком в палубную команду, а это значит, в моём. . .
Ритм жизни
kumehtar 27.02.2026
Иногда приходится жить в ритме, где дел становится всё больше, а вовлечения в происходящее — всё меньше. Плотный график не даёт вниманию закрепиться ни на одном событии. Утро начинается с быстрых,. . .
SDL3 для Web (WebAssembly): Сборка библиотек: SDL3, Box2D, FreeType, SDL3_ttf, SDL3_mixer и SDL3_image из исходников с помощью CMake и Emscripten
8Observer8 27.02.2026
Недавно вышла версия 3. 4. 2 библиотеки SDL3. На странице официальной релиза доступны исходники, готовые DLL (для x86, x64, arm64), а также библиотеки для разработки под Android, MinGW и Visual Studio. . . .
SDL3 для Web (WebAssembly): Реализация движения на Box2D v3 - трение и коллизии с повёрнутыми стенами
8Observer8 20.02.2026
Содержание блога Box2D позволяет легко создать главного героя, который не проходит сквозь стены и перемещается с заданным трением о препятствия, которые можно располагать под углом, как верхнее. . .
Конвертировать закладки radiotray-ng в m3u-плейлист
damix 19.02.2026
Это можно сделать скриптом для PowerShell. Использование . \СonvertRadiotrayToM3U. ps1 <path_to_bookmarks. json> Рядом с файлом bookmarks. json появится файл bookmarks. m3u с результатом. # Check if. . .
Семь CDC на одном интерфейсе: 5 U[S]ARTов, 1 CAN и 1 SSI
Eddy_Em 18.02.2026
Постепенно допиливаю свою "многоинтерфейсную плату". Выглядит вот так: https:/ / www. cyberforum. ru/ blog_attachment. php?attachmentid=11617&stc=1&d=1771445347 Основана на STM32F303RBT6. На борту пять. . .
КиберФорум - форум программистов, компьютерный форум, программирование
Powered by vBulletin
Copyright ©2000 - 2026, CyberForum.ru