Вниз
Скачать: CL | DM;

Пара вопросов по InterBase   Найти похожие ветки 

← →
Ru ©   (2003-10-07 11:55) [0]

Имеем две таблицы в одной хранятся записи подчиненные по отношению к другой. Использую BLOB поля.
Сохраняю мастер-запись.
Сохраняю деталь-запись.
Считываю:
сначала мастер-запись - без проблем.
затем фильтрация по мастер-записи деталь-записи.
Далее делаем следующее:
for i:=0 to DetTBL.RecordCount-1 do begin
SomeDest:=ReadZ();//допустим это процедура считывания данных из текущей записи
DecTBL.Next;
end;

Вместо считывания, например, двух записей считывается одна - последняя.

что я делают сильно не так?


← →
Term ©   (2003-10-07 11:57) [1]

какие компанеты используеш?


← →
vm   (2003-10-07 12:00) [2]

Как выполнена связь Detail-Master, какие компонента доступа, как выполняется фильтрация, что внутри процедуры Readz?


← →
Ru ©   (2003-10-07 12:03) [3]

Компоненты доступа: IBX
Связь - ручками


← →
Малиновский Владимир   (2003-10-07 12:10) [4]

Попробуй заменить
for i:=0 to DetTBL.RecordCount-1 do begin
SomeDest:=ReadZ();
DecTBL.Next;
end

на

DetTBL.First // Или что там ?
while not DetTBL.EOF do begin
SomeDest:=ReadZ();
DecTBL.Next;
end

В IBX RecordCount хранит число РЕАЛЬНО считанных записей.


← →
Term ©   (2003-10-07 12:10) [5]

понятно что IBX, какие имено скорее всего не верно выполнена связь мастер детальный, так как фильтрация ваще не нужна для ентого


← →
Ru ©   (2003-10-07 12:15) [6]

>Малиновский Владимир (07.10.03 12:10) [4]

это и так делаю.

>Term © (07.10.03 12:10) [5]

если быть точным, то связи как таковой нет. Есть отдельные две таблицы с которые я и "дворкую влендишным способом".


← →
Term ©   (2003-10-07 12:18) [7]


> "дворкую влендишным способом

это как ??????


← →
Малиновский Владимир   (2003-10-07 12:21) [8]

Наборы - то двунаправленные?


← →
Ru ©   (2003-10-07 12:24) [9]

>Term © (07.10.03 12:18) [7]

деталь таблицу фильтруем по мастер таблице - получаем набор данных. /пока работал с Paradox все так просто было/


← →
Term ©   (2003-10-07 12:33) [10]

так ты и в парадоксе сильно заблуждался, и сюда старые ошибки перенёс......
для парадокса нужно было связь по ключевым полям с индексами организовать, а то что ты делал, это не правильно
а в TIBDataSet там тоже всё по другому...
или я как понял ты при работе с IB пользуешся TIBTable, поэтому и фильтруеш???


← →
Ru ©   (2003-10-07 12:38) [11]

TIBDataBase //TIBTransaction
TIBDataSet - не BLOB данный получаю без проблем
TIBQuery - использую для получения BLOB данных
Select * from DetTBL
where id=id

id - первичный ключ
Метаданные:
CREATE TABLE DetTBL(
id INTEGER NOT NULL PRIMARY KEY,
...


← →
Term ©   (2003-10-07 12:49) [12]


> Select * from DetTBL
> where id=id

может так where id=:id


← →
Ru ©   (2003-10-07 13:06) [13]

>Term © (07.10.03 12:49) [12]

Да, так и есть.

Может я вопрос непонятно сформулировал?


← →
Жук ©   (2003-10-07 13:34) [14]

Зачем такой странный цЫкл ?


← →
Жук ©   (2003-10-07 13:35) [15]

Зачем ненадёжный RecordCount ?


← →
Ru ©   (2003-10-07 13:53) [16]

>Жук © (07.10.03 13:34) [14]

привычки сложно менять

>Жук © (07.10.03 13:35) [15]

а что лучше?


← →
Delirium^.Tremens ©   (2003-10-07 13:53) [17]

В OnScroll мастера закрывай и открывай detail dataset, в котором query с условием where по id мастера.


← →
Ru ©   (2003-10-07 14:01) [18]

ладно попробую переформулировать вопрос, когда пойму, что от меня хотят


← →
Johnmen ©   (2003-10-07 14:06) [19]

>Delirium^.Tremens © (07.10.03 13:53) [17]

Думаешь поможет ? :)))
Особенно, когда "id - первичный ключ ... CREATE TABLE DetTBL(
id INTEGER NOT NULL PRIMARY KEY" в детальной табл. ???


← →
Term ©   (2003-10-07 14:18) [20]

а почему нельзя зависимую таблицу тоже через TIBDataSet сделать, тогда и связь организовать проще


← →
Term ©   (2003-10-07 14:20) [21]


> CREATE TABLE DetTBL(
> id INTEGER NOT NULL PRIMARY KEY

????????????


← →
Ru ©   (2003-10-07 14:22) [22]

IBDataSet не использую (она для галочки)
Информацию беру через IBQuery.


← →
Ru ©   (2003-10-07 14:24) [23]

>Term © (07.10.03 14:20) [21]

Что именно не устраивает?


← →
Term ©   (2003-10-07 14:31) [24]

Как я понял это зависимая таблица.
а поле связи в подчинённой таблице не должно быть PRIMARY KEY


← →
Term ©   (2003-10-07 14:33) [25]

DetTBL.First ?


← →
Ru ©   (2003-10-07 14:38) [26]

>Term © (07.10.03 14:33) [25]

а в этом смысле. Ошибся чуток. там так: TBLDet :)

>Term © (07.10.03 14:31) [24]

у меня:
id INTEGER NOT NULL PRIMARY KEY,
idl INTEGER, - по этому полю я отслеживаю связь


← →
Ru ©   (2003-10-07 14:39) [27]

а вообще не парьте головы, я чуть позже переформулирую вопрос.


← →
Term ©   (2003-10-07 14:41) [28]

подключи грид подчинённой таблице посмотри какой набор возвращает запрос, токо цикл отключи


← →
Ru ©   (2003-10-07 14:43) [29]

>Term © (07.10.03 14:41) [28]

грид крайне мило напишет: (BLOB)


← →
Term ©   (2003-10-07 14:46) [30]

да я понимаю что напишет он очень романтично, просто скоко записей возвращает, и ваще ты увииш примерно то с чем работаеш, а вытаскивать из блоба это уже детали, я не про них говорю


← →
Ru ©   (2003-10-07 14:50) [31]

Всем спасибо за содействие. Завтра задам нормально сформулированный вопрос.


← →
Delirium^.Tremens ©   (2003-10-07 15:51) [32]


> Johnmen © (07.10.03 14:06) [19]
>
> Думаешь поможет ? :)))
> Особенно, когда "id - первичный ключ ... CREATE TABLE DetTBL(
> id INTEGER NOT NULL PRIMARY KEY" в детальной табл. ???


Ты же знаешь как я читаю всякую пургу:
"Картинки и графики пропускаем, в революционную суть вникаем" (с)
:-)

Эту фразу я вообще слабо понял. И, насколько я ее ТЕПЕРЬ понял, у товарища отсутствует понимание сути реляционных баз. Или ошибка в пресловутой строке. Одно из трех. :-)



Страницы: 1 вся ветка

Скачать: CL | DM;



Память: 0.51 MB
Время: 0.015 c
9-89091
diaz
2002-11-25 22:55
2003.10.27
OpenGL : QUTERNIONS


3-89109
Alik$
2003-10-08 12:31
2003.10.27
Сумма прописью в платежных поручения. Как сделать ?


4-89656
Aleksei K
2003-08-20 11:06
2003.10.27
VCL формы из DLL


14-89474
SlavaZ
2003-10-07 09:59
2003.10.27
Подскажите кто знает


1-89335
killer
2003-10-16 12:52
2003.10.27
PopupMenu




   Наверх