|
|
Регистрация | << Правила форума >> | FAQ | Пользователи | Календарь | Поиск | Сообщения за сегодня | Все разделы прочитаны |
|
Опции темы | Поиск в этой теме | Опции просмотра |
#1
|
|||
|
|||
скроллбары 2-х Dbgridов
есть такая проблема: есть 2 dbgrida которые тянут данные из 2-х таблиц Access, в первой таблице ФИО и ИН в другой проводяться различные расчеты. Кол-во записей в 2-х таблицах одинаково, соединить данные в 1 таблицу нельзя. Как бы сделать так чтобы при перемещении скроллбара 1-го dbgrida автоматически перемещался скроллбар 2-го dbgrida, чтобы строки были всегда напротив друг друга.
|
#2
|
||||
|
||||
Цитата:
|
#3
|
|||
|
|||
в 1-й таблице карточка человека(Фам, Имя, отч, ИН....), во второй данные по начислению зарплаты. связь 2-х таблиц через ИН. Мне нужно чтобы в DBGrid Выводилось Фам, Имя, Отч, ИН, и все данные по начисл зарплаты (около 40 полей), а DBGrid соединяется только с 1-м DataSours, вот и возникла идея поставить ещё 1 DBGrid, отсюда и возникла проблема.
|
#4
|
||||
|
||||
Почему бы не написать все в одном запросе, что позволит использовать один датасурс?
|
#5
|
|||
|
|||
А можете подсказать как это правильно сделать? и главное как из 2-х таблиц запихнуть данные в DbGrid
|
#6
|
||||
|
||||
Код:
select t1.*, t2.* from table1 t1, table2 t2 where t1.id = t2.id |
#7
|
|||
|
|||
Цитата:
Dbgrid связан с таблицей в которой нет полей Фам, имя, отч, есть только ИН, по ИН идет связь ещё с несколькими таблицами. Добавить эти поля не выход, потому что их нужно будет добавлять в каждую из 5-7 таблиц и получиться что 1 таблица связывается с остальными по 4-м полям, хотя достаточно 1-го. Где тогда нормализация. Вот и проблема, что не могу придумать как вывести в 1 Dbgrid поля из 2-х таблиц. |
#8
|
||||
|
||||
Или я дурак или лыжи не едут.
Вы хотите в одном запросе выбрать данные из нескольких таблиц? Т.е. отобразить данные из двух связанных таблиц в одном гриде. Если да- то читайте пример выше. Если непонятно как это сделать, исходя из примера, то надо как минимум показывайте запросы ваши, а лучше почитать как делаются запросы и что это такое вообще. |
#9
|
||||
|
||||
Давайтека все-же начнем с того, что вы схему вашей БД покажете. Есть стойкое подозрение, что вы что-то накрутили.
А что касается первоначального вопроса о связи гридов, то связывать надо ваши запросы/таблицы с помощью мастер/детайл. Жизнь такова какова она есть и больше никакова. Помогаю за спасибо. Последний раз редактировалось Страдалецъ, 22.11.2010 в 17:09. |
#10
|
|||
|
|||
Начну с начала:
у меня есть: Data module fDm: TADOTable: TKart, TZp... DataSourse: DSKart, DSZp.... ADOQuery1 Form1: DBGrid1 TKart связано с таблицей БД KART TZp связано с таблицей БД zp Поля в TKart, TZp из соответствующих таблиц. В Button1.onClick пишу Код:
with fdm do begin ADOQuery1.Close; ADOQuery1.SQL.Clear; ADOQuery1.SQL.Add('SELECT * FROM KART, Zp WHERE KART.Tabn=Zp.Tabn'); ADOQuery1.Active:= True; DsZp.DataSet:=Adoquery1; end; В DBGrid1 выводяться записи которые запросил, а ФИО не пойму как вывести в DBGrid1. Что я делаю не правильно или чего не хватает в проекте? |
#12
|
||||
|
||||
Тут лучше все- таки будет через master-detail связь. Тогда при выборе сотрудника в одном гриде, в другом будут видны все его начисления.
TQuery- q1, q2 TDBGrid- g1, g2 TDataSource- ds1, ds2 Код:
q1.sql.text:='SELECT * FROM KART'; q2.sql.tetx:='SELECT * FROM ZP WHERE ZP.Tabn= :Tabn'; ds1.dataset:=q1; ds2.dataset:=q2; q2.mastersource:=q1; q2.masterfields:='Tabn'; g1.datasource:=ds1; g2.datasource:=ds2; q1.open; q2.open; В варианте с: Код:
SELECT * FROM KART, Zp WHERE KART.Tabn=Zp.Tabn Сори, не обратил вниманите что это ADO. Скорее всего надо не мастерсурс указать, а датасурс: Код:
q2.datasource:=ds1; Последний раз редактировалось TOJluK, 22.11.2010 в 17:44. |
#14
|
|||
|
|||
Цитата:
Что то я не нашел у ADOQuery свойства mastersource |
#15
|
||||
|
||||
А если мой пост до конца прочитать?
|