Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Вниз

Фильтрация записей ADOTable   Найти похожие ветки 

 
Edd ©   (2006-12-16 19:31) [0]

Доброго времени суток!
Мастера, подскажите, ранее писал через ClientDataSet трёхзвенки - фильтрация проходила без вопросов. Сейчас пишу для MS SQL сервера доступ конечно через ADO.
фильтрация для подчиненных таблиц невозможна. возникает ошибка - "...Filter property cannot be used for detail tables..." уже читал по этому поводу какие-то форумы. Но нигде ничего конкретного не сказано как обойти эту проблему.
если надо использовать ADOQuery, то подскажите код вместе с запросом, подробно.
Спасибо!


 
sniknik ©   (2006-12-16 19:39) [1]

> если надо использовать ADOQuery
использовать надо ADOConnection, ADODataSet и ADOCommand (ну и можно RDSConnection если трехзвенку исключительно на ADO делать), остальное надо выкинуть и забыть как страшный сон, описания в книжках буде встретятся пропускать не читая.

> то подскажите код вместе с запросом, подробно.
подробнее чем в BOL не бывает, а оно у тебя под рукой, раз уж MSSQL стоит.


 
Edd ©   (2006-12-16 20:12) [2]

а я щас не трёхзвенку делаю... Поэтому компоненты юзаю ADOConnection DataSet ADOTable ADOQuery
уже соединение между клиентским приложением и сервером настроил, не хотелось бы компонеты менять..
PS а там таких проблем с фильтром не будет?
там чтоб к к серверу сконнектиться нужно ведь указать в RDSConnection
два свойства serverName и ComputerName?


 
Anatoly Podgoretsky ©   (2006-12-16 20:25) [3]

> Edd  (16.12.2006 20:12:02)  [2]

> ADOConnection DataSet ADOTable ADOQuery

Два последних зря используешь.


 
MsGuns ©   (2006-12-16 20:26) [4]

Дело не в том, что Вы "переехали" с клиентского на адошный компонент, а в том, что, очевидно, пытаетесть применить фильтр к таблице, которая связана как дочерняя с другой отношением Master-Detail .
Побороть проблему можно, избавившись от прямой связки Master-Detail, заменив ее "ручным" переоткрытием детального запроса при изменении текущей записи в Главной.


 
Edd ©   (2006-12-16 20:33) [5]


> Побороть проблему можно, избавившись от прямой связки Master-
> Detail, заменив ее "ручным" переоткрытием детального запроса
> при изменении текущей записи в Главной.

вот в том-то и дело, я не в курсе, подскажите пожалуйста как это делается поподробнее?


 
Anatoly Podgoretsky ©   (2006-12-16 20:45) [6]

> Edd  (16.12.2006 20:33:05)  [5]

Убери прямую связь, и делай ее в OnAfterScroll если речь идет о гридах.


 
MsGuns ©   (2006-12-16 20:51) [7]

Какие компоненты используете для извлечения данных с сервера и как установили "связующие" свойства ?


 
Edd ©   (2006-12-16 21:31) [8]

для связи с севрером - ADOConnection

в свойствах у ADOTable детальной таблицы указано:
IndexFiledName
MasterFields
MasterSource
и TableName

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


 
Anatoly Podgoretsky ©   (2006-12-16 21:35) [9]

> Edd  (16.12.2006 21:31:08)  [8]

Выбрось ADOTable - использование ни чем не обосновано.


 
Edd ©   (2006-12-16 21:43) [10]


> Выбрось ADOTable - использование ни чем не обосновано.

а вместо этого к таблицам чем подключаться и перемещаться по набору? надо чтобы налицо в гридах был фатк связи один ко многим...
какая альтернатива тэйблам?


 
Anatoly Podgoretsky ©   (2006-12-16 21:45) [11]

> Edd  (16.12.2006 21:43:10)  [10]

TAdoDataset


 
Edd ©   (2006-12-16 21:48) [12]

а там надо будет обрывать связь или нет?


 
Anatoly Podgoretsky ©   (2006-12-16 21:52) [13]

> Edd  (16.12.2006 21:48:12)  [12]

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


 
Edd ©   (2006-12-16 21:52) [14]

никогда его не пользовал еще.. как настроить правильно? Там возникает ошибка Missing CommanText property..


 
Anatoly Podgoretsky ©   (2006-12-16 21:53) [15]

> Edd  (16.12.2006 21:52:14)  [14]

Заполнить данное свойство
Читать про SQL


 
Edd ©   (2006-12-16 22:02) [16]

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


 
Anatoly Podgoretsky ©   (2006-12-16 22:06) [17]

> Edd  (16.12.2006 22:02:16)  [16]

Точно также и с TAdoDataset только более гибко.


 
Edd ©   (2006-12-16 22:15) [18]

а вот я щас попробовал, перехожу по записям в гриде главной таблицы... а в дочернем гриде ничего не меняется, что надо сделать?


 
Anatoly Podgoretsky ©   (2006-12-16 22:21) [19]

> Edd  (16.12.2006 22:15:18)  [18]

А что сделал?


 
Edd ©   (2006-12-16 22:28) [20]

к одному DataSet сделал свойство CommandText:=select * from Master
а ко второму DataSet:  select * from Details
компонетам DataSource подключил соответсвующие DataSet
а в гридах указал нужные dataSource
чего не хватает для полного счастья?:)


 
sniknik ©   (2006-12-16 22:41) [21]

> чего не хватает для полного счастья?:)
параметров/а связи во втором запросе, ну и еще указания DataSource у второго дататсета указывающего на первый. (у таблиц то MasterSource указывал, а тут?)


 
Edd ©   (2006-12-16 22:51) [22]

подскажи какие параметры во втором запросе написать надо и как, а то я не силен в этом...
я окончательно запутался как свойства DataSource распределить..
значит есть у нас datasetMaster datasetDetails далее dataSourseMaster dataSourceDetails и два грида
че теперь делать (по порядку)?


 
sniknik ©   (2006-12-16 23:01) [23]

> подскажи какие параметры во втором запросе написать надо и как
а я знаю?... твои таблицы, твоя структура, твои поля, твои желания по их связи... ничего не озвучено. а я должен знать что тебе там написать надо.  

> че теперь делать (по порядку)?
можно взять книжку и почитать... или F1 нажать и там почитать, пример оттуда скопировать.


 
Anatoly Podgoretsky ©   (2006-12-16 23:04) [24]

> Edd  (16.12.2006 22:28:20)  [20]

Во втором не хватает части WHERE и MasterSource := DataSource1; + ADOTable2.MasterField := ...


 
Anatoly Podgoretsky ©   (2006-12-16 23:05) [25]

> Edd  (16.12.2006 22:51:22)  [22]

Заполнить их, в справке есть даже пример, ну не копировать же его сюда?


 
Edd ©   (2006-12-16 23:08) [26]

Главная таблица - три поля
gid - ключевое
group - текстовое

дочерняя
mid - ключевое
groupkod - поле по которому таблица связана с главное с полем gid связью
остальные текстовые поля просто для инфы..

как должен в таком случае корректно выглядеть запрос с параметрами?
(насколько я понимаю он должен быть во втором dataset для дочерней таблицы)


 
sniknik ©   (2006-12-16 23:13) [27]

SELECT * FROM дочерняя WHERE groupkod=:gid

у этого датасета DataSource установить указывающий на основной. это все.


 
Anatoly Podgoretsky ©   (2006-12-16 23:18) [28]

> Edd  (16.12.2006 23:08:26)  [26]

Where GID=:GID


 
Anatoly Podgoretsky ©   (2006-12-16 23:20) [29]

> Anatoly Podgoretsky  (16.12.2006 23:18:28)  [28]

Поправка, смотри код [27]


 
sniknik ©   (2006-12-16 23:22) [30]

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


 
Anatoly Podgoretsky ©   (2006-12-16 23:24) [31]

> sniknik  (16.12.2006 23:22:30)  [30]

Пускай для начала связь заставит работать.


 
Edd ©   (2006-12-17 16:20) [32]

спасибо большое! теперь всё гораздо яснее



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

Форум: "Базы";
Текущий архив: 2007.03.11;
Скачать: [xml.tar.bz2];

Наверх





Память: 0.53 MB
Время: 0.045 c
1-1169040865
Strate
2007-01-17 16:34
2007.03.11
Потоки


4-1161758488
leonidus
2006-10-25 10:41
2007.03.11
Не удается получить заголовок окна


15-1171652440
Чародей
2007-02-16 22:00
2007.03.11
icq


2-1171716285
@gent
2007-02-17 15:44
2007.03.11
Дирректория запуска программы.


11-1142601519
sff
2006-03-17 16:18
2007.03.11
передача данных в Excel





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский