Справочник функций

Ваш аккаунт

Войти через: 
Забыли пароль?
Регистрация
Информацию о новых материалах можно получать и без регистрации:

Почтовая рассылка

Подписчиков: -1
Последний выпуск: 19.06.2015

Вопрос по БД

14K
18 июля 2006 года
KerK
29 / / 18.07.2006
Добрый день! Есть вопрос, по БД.
Есть главная таблица, в которую забиваются коды из таблиц-справочников, хочу чтобы при просмотре в dbgrid показывались не коды, а наименования из справочников.
Заранее спасибо!
315
18 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=KerK]Добрый день! Есть вопрос, по БД.
Есть главная таблица, в которую забиваются коды из таблиц-справочников, хочу чтобы при просмотре в dbgrid показывались не коды, а наименования из справочников.
Заранее спасибо![/QUOTE]
Применять связывание таблиц. Типа такого запроса:
select table1.field1_1, table2.field2_3 from table1 inner join table2 on table1.field1_2 = table2.field2_1
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
[QUOTE=Nick_M]Применять связывание таблиц. Типа такого запроса:
select table1.field1_1, table2.field2_3 from table1 inner join table2 on table1.field1_2 = table2.field2_1[/QUOTE]

Извиняюсь за бестолковый вопрос, а каким образом осуществить связывание таблицы? Какой инструмент нужно для этого использовать?
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
Через компоненту ADOQuery? Кстати база акцесовская
315
18 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=KerK]Через компоненту ADOQuery? Кстати база акцесовская[/QUOTE]
Можно через ADOQuery, а можно через ADOTable. База в сети или локальная? Если в сети, тогда быстрее будет работать Query. Если локальная, то Table (с некоторыми условностями). Можно поместить на форму 2 компонента ADOTable и через их свойства сделать связывание. Как конкретно, я не знаю: не работаю я с ними. Редактирование данных непосредственно в ДБГриде нужно?
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
[QUOTE=Nick_M]Можно через ADOQuery, а можно через ADOTable. База в сети или локальная? Если в сети, тогда быстрее будет работать Query. Если локальная, то Table (с некоторыми условностями). Можно поместить на форму 2 компонента ADOTable и через их свойства сделать связывание. Как конкретно, я не знаю: не работаю я с ними. Редактирование данных непосредственно в ДБГриде нужно?[/QUOTE]

Нет, редактирование и ввод через DBEdit. База локальная.
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
Связывание я произвел, но таким макаром, что на экране присутствуют две таблицы, и если я в одной таблице двигаю курсором во второй меняются данные. А мне нужно чтобы в одной таблице за место кода появлялась расшифровка его. В ADOTable в упор не увидел, как устроить такого рода связку.
315
18 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=KerK]Нет, редактирование и ввод через DBEdit. База локальная.[/QUOTE]
Тогда вполне можно написать запрос в ADOQuery. Будет проще и эффективней.
315
18 июля 2006 года
Nick_M
399 / / 29.05.2003
Напиши примерную структуру таблиц, я набью запрос
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
база main2
поля:
ключ. main2oper (числ.)
main2ofzp (числ.) код


база ofzp
поля:
ключ. ofzp_kod (счетчик)
ofzp_name (текст)
ofzp_oklad (денеж.)


на экране база main2
КОд / Наименование ОФЗП
main2oper / main2ofzp=ofzp_name
14K
18 июля 2006 года
KerK
29 / / 18.07.2006
Работал раньше с Foxpro. По идее запрос такой:
select main2oper, ofzp_name from main2, ofzp where main2.main2ofzp=ofzp.ofzp_kod
315
18 июля 2006 года
Nick_M
399 / / 29.05.2003
select main2.main2oper, ofzp.ofzp_name from main2 inner join ofzp on main2.main2ofzp = ofzp.ofzp_kod
Отличие от Foxpro получается минимальны.

п.с. Только видимо не "база main2", а "таблица main2"?
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
При компилирование и установки ADOQuery Active=true пишет, "несоответствие типа в выражении". Где искать причину?
315
19 июля 2006 года
Nick_M
399 / / 29.05.2003
А типы полей main2.main2ofzp и ofzp.ofzp_kod совпадают?
315
19 июля 2006 года
Nick_M
399 / / 29.05.2003
Кстати правильность запроса можно проверить в аксесе. Или в режиме конструктора создать запрос в access, потом sql-текст скопировать в ADOQuery, удалив лишнее.
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
Написал:SELECT main2oper, ofzp_name from main2, ofzp
Заработало, показались в гриде данные.

пишу
SELECT main2oper, ofzp_name from main2 inner join ofzp on main2ofzp = ofzp_kod

Выдается ошибка: Не поддерживается выражение объединения
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
Оба поля числовые
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
Усе заработало, в акцессе кстати твой код заработал. Большое спасибо!
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
[QUOTE=KerK]Усе заработало, в акцессе кстати твой код заработал. Большое спасибо![/QUOTE]
Блин, а в билдере не хочет
315
19 июля 2006 года
Nick_M
399 / / 29.05.2003
[QUOTE=KerK]Написал: пишу
SELECT main2oper, ofzp_name from main2 inner join ofzp on main2ofzp = ofzp_kod

Выдается ошибка: Не поддерживается выражение объединения[/QUOTE]
Что-то не понял. в Access этот-же запрос работает? Может пришлешь мне твою базу со структурой, я попробую?
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
[QUOTE=Nick_M]Что-то не понял. в Access этот-же запрос работает? Может пришлешь мне твою базу со структурой, я попробую?[/QUOTE]

В акцессе запрос сработал, в билдере ошибка "не поддерживается выражение объединения".
ОК, скинь мне свое мыло на [email]kerk@onego.ru[/email]
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
оо...заработало, скопировал запрос с ACCESSA и усе заработало
SELECT main2.main2oper, ofzp.ofzp_name
FROM main2 INNER JOIN ofzp ON main2.main2ofzp=ofzp.ofzp_kod;
315
19 июля 2006 года
Nick_M
399 / / 29.05.2003
Это чего, дело в точке с запятой было?
14K
19 июля 2006 года
KerK
29 / / 18.07.2006
[QUOTE=Nick_M]Это чего, дело в точке с запятой было?[/QUOTE]
Ага, щас вот попробовал добавил, и завелся грид...
315
19 июля 2006 года
Nick_M
399 / / 29.05.2003
ну вот никогда access (aka ms jet) не любил...
Реклама на сайте | Обмен ссылками | Ссылки | Экспорт (RSS) | Контакты
Добавить статью | Добавить исходник | Добавить хостинг-провайдера | Добавить сайт в каталог