![]() |
| ||
|
|
Новости |
Поиск |
FAQ |
Статьи |
Книги |
Новости VCL
| | Форумы ЧАТ |
Орешник |
|
| |||
| |||
« предыдущая ветвь | форум | следующая ветвь »
MasterSourse в IBDATASET [D7, IB6.x]
Fedor © (2004-11-29 16:47:00)Подскажите пожалуйста аналог MasterSourse от IBTable для IBDATASET(т.е. связанные поля)
Hmm (2004-11-30 22:52:00) [1]хотя постойте, у меня IBDataset1.datasource=DataSource1 и IBDataset2.datasource=DataSource2... забавно.
Hmm (2004-11-30 22:48:00) [2]бывает )
Val (from Donetsk) (2004-11-30 22:43:00) [3]:) правильно
Fedor (2004-11-30 15:52:00) [4]Дурдом какой-то. Это не работало, потому что в свойстве IBDataSet2-DataSourse нужно было указать DataSourse, который присоединен к IBDataSet1!!! Как вам это?
Fedor (2004-11-30 12:44:00) [5]Таблица 1, мастер- RegTable(первое поле RID). Таблица 2- KassaTable(первое поле KID). Связанны по полю KID=RID. На RID стоит генератор (CREATE GENERATOR GEN_REGTABLE;
SET GENERATOR GEN_REGTABLE TO 27;). Его указываю в Generator field. На форме IBDataSet, IBDataBase, IBTransaction, DataSource, DBGrid, добавил на всякий случай UpdateSQL- ничего. Соответсвующие данные есть.
Hmm (2004-11-30 09:50:00) [6]Собственно [2] от [3] не сильно отличаются (запостил, потому что не сразу понял суть [2]), но вот в [3] абсолютно работающий код (по крайней мере при стандартных усовиях, набросав компоненты на форму, связав и подцепив к своей базе, проверил - все ОК).
Рискну предположить, что во второй таблице у тебя просто нет соответсвующих записей?
Либо поробуй конкретнее описать как ты организовывал эту связь, чтобы можно было бы смоделировать твою ситуацию у себя. =)
Fedor (2004-11-30 04:40:00) [7]К сожалению не прокатил ни один вариант. Таблицы должны быть связаны по первому полю (я так понимаю оно Fields[0].Integer) в обеих таблицах. И в первом и во втором случаях в DBGride присоединенной таблице пусто.
Hmm (2004-11-29 21:18:00) [8]а можно так:
procedure TForm1.IBDataSet1AfterScroll(DataSet: TDataSet);
begin
ibdataset2.close;
ibdataset2.SelectSQL.Clear;
ibdataset2.SelectSQL.Add('select * from Tovar where Tov_Group_Nomer=:Tov_Group_ID');
ibdataset2.Params[0].AsString:=dataset.Fields.Fields[1].AsString;;
ibdataset2.Open;
end;
где IBDataset1 - "главная" таблица, IBDataset2 - "дочерняя" таблица, Fields[1] - то поле в "главной" таблице, по которому осуществляется связь (как я понял - Tov_Group_Nomer).
Vemer (2004-11-29 20:22:00) [9]Похоже IbTable тебя задолбал )).
Используй свойство DataSourceи параметрический запрос.
Например
Select * From Tovar
Where Tov_Group_Nomer = :Tov_Group_ID;
Tov_Group_ID- поле в Master таблице.
Fedor (2004-11-29 20:04:00) [10]select * from ds2, ds1 where id1=id2 не помогает. В DBgrid'е ds2 висит несколько записей непонятно по какому принцыпу отобранные. Кто знает в чем дело?