Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2003.10.27;
Скачать: 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 вся ветка

Текущий архив: 2003.10.27;
Скачать: CL | DM;

Наверх




Память: 0.53 MB
Время: 0.036 c
14-89510
Dmitriy O.
2003-10-09 08:48
2003.10.27
Эволюция программы или


4-89635
Davinchi
2003-08-22 13:56
2003.10.27
Hint s в Explorer e


1-89214
vv40in
2003-10-15 12:53
2003.10.27
интерфейс c Cи


3-89168
SB
2003-10-06 08:04
2003.10.27
Delphi 6 и Office XP (по крайней мере Excel)! Не работает!


1-89373
Aleksandr
2003-10-15 17:54
2003.10.27
Что может вызвать в ActiveX такую ошибку?