Выбор значений полей из DBF произвольного формата
Модератор: Дед Пахом
Правила форума
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
При написании вопроса или обсуждении проблемы, не забывайте указывать версию Clarion который Вы используете.
А так же пользуйтесь спец. тегами при вставке исходников!!!
Выбор значений полей из DBF произвольного формата
Можно ли как-нибудь не привязываясь к формату ДБФ-файла получать оговоренные поля. Ну типа как открытие ДБФ-ок в фокс-про - выбрать только нужные поля, т.е. что бы не было привязки к точному соответсвию структуры
Не затруднит ли вас написать коротенький пример?
Т.е. задача примерна такая:
1. Есть несколько баз, с разными наименованиями полей
2. Есть база зависимостей - бакая-то база, такое-то имя поле -> что означает. Т.е. примерно так:
База1 - Поле1 - Операция
База2 - Поле2 - Операция
База1 - Поле6 - Количество
База2 - Поле6 - Количество
---------------------------------
В результате надо получить одну общую таблицу с полями "Операция" и "Количество"
Т.е. задача примерна такая:
1. Есть несколько баз, с разными наименованиями полей
2. Есть база зависимостей - бакая-то база, такое-то имя поле -> что означает. Т.е. примерно так:
База1 - Поле1 - Операция
База2 - Поле2 - Операция
База1 - Поле6 - Количество
База2 - Поле6 - Количество
---------------------------------
В результате надо получить одну общую таблицу с полями "Операция" и "Количество"
- Дед Пахом
- Старичок
- Сообщения: 3285
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 48 раз
- Контактная информация:
что-то вроде
имена колонок берёте из Вашей базы зависимостей
Код: Выделить всё
SELECT Column1 as Op, Column6 as Amount FROM Table1
UNION
SELECT Column2 as Op, Column6 as Amount FROM Table2
С уважением, ДП
синтаксист сиквала ясен - мне не понятено как описать произвольную ИСХОДНУЮ базу
Последний раз редактировалось KoMap 21 Апрель 2006, 10:43, всего редактировалось 1 раз.
- Дед Пахом
- Старичок
- Сообщения: 3285
- Зарегистрирован: 07 Июль 2005, 16:51
- Откуда: Москва, Россия
- Благодарил (а): 15 раз
- Поблагодарили: 48 раз
- Контактная информация:
О какой версии клариона говорим? Если о 6-ой более-менее последних патчах, то там появился ключ TURBOSQL для атрибута DRIVER(), который позволяет описать и юзать "виртуальную" таблицу. Если версия младшая, то имхо либо ODBC API (что муторно с нуля самому писать), либо завести ещё один физический dbf с полями Operation и Amount и сливать данные в него.
Не знаю, может MAV Direct ODBC тут поможет? Говорят, просто и элегантно разбирается с любыми ODBC-проблемами.
Не знаю, может MAV Direct ODBC тут поможет? Говорят, просто и элегантно разбирается с любыми ODBC-проблемами.
С уважением, ДП
-
- Ветеран движения
- Сообщения: 78
- Зарегистрирован: 04 Август 2005, 9:35
- Контактная информация:
Даже руками через ODBC можно без проблем получить параметры любой таблицы, с которой работаем через полноценный odbc-драйвер (драйвер в терминах ОС) - нужно использовать SQLColumns и потом классическое сочетание SQLBindCol+цикл SQLFetch для получения нужной информации о полях некой таблицы (можно получить все что угодно - в том числе информацмию о именах полей, типах и размерностях).
Ну а потом постороить динамически запрос на основании полученных данных - дело уже примитивное.
Ну а потом постороить динамически запрос на основании полученных данных - дело уже примитивное.
Т.е. таблица должна быть жестко описана в исходнике?softcreator писал(а):Даже руками через ODBC можно без проблем получить параметры любой таблицы
6.3Дед Пахом писал(а):О какой версии клариона говорим?
Спасибо за наводки - посмотрю, понюхаю, пощупаюДед Пахом писал(а):появился ключ TURBOSQL для атрибута DRIVER()... Не знаю, может MAV Direct ODBC тут поможет
-
- Ветеран движения
- Сообщения: 78
- Зарегистрирован: 04 Август 2005, 9:35
- Контактная информация:
-
- Ветеран движения
- Сообщения: 78
- Зарегистрирован: 04 Август 2005, 9:35
- Контактная информация:
1. Тебе нужно физически создать файл, который совпадает со структурой необходимой тебе выборки и закларировать его в приложении с odbc-драйвером. Этот файл потребуется тебе только как dummy-структура для получения хендла odbc-соединения и как буфер для получения результирующей выборки
2. Инициализируешь нужным образом owner-переменную данного файл и открываешь его. Как инициализировать - смотри на сайтах
http://www.able-consulting.com/MDAC/ADO ... SNLess.htm
http://www.connectionstrings.com
3. По открытому файлу получаешь хендл соединения (PROP:hstmt)
4. Открываешь MSDN и читаешь об использовании тех функций, что я указал выше.
5. Получив список полей интересующих тебя таблиц стоишь запрос для получения данных из этих таблиц
6. Используя PROP:Sql для описанной dummy-таблицы выполняешь запросы и получаешь значения интересующих тебя полей.
Если сам не сможешь сделать - спроси у Андрея Мялина - может быть у него есть реализованный механизм получения инфы о структурах odbc-источников. Не получится - пиши мне лично, я дам библиотеку - там первые 4 пункта можно реализовать десятком строк кода. Ну и не нужен будет в приницпе доп.файл естественно.
2. Инициализируешь нужным образом owner-переменную данного файл и открываешь его. Как инициализировать - смотри на сайтах
http://www.able-consulting.com/MDAC/ADO ... SNLess.htm
http://www.connectionstrings.com
3. По открытому файлу получаешь хендл соединения (PROP:hstmt)
4. Открываешь MSDN и читаешь об использовании тех функций, что я указал выше.
5. Получив список полей интересующих тебя таблиц стоишь запрос для получения данных из этих таблиц
6. Используя PROP:Sql для описанной dummy-таблицы выполняешь запросы и получаешь значения интересующих тебя полей.
Если сам не сможешь сделать - спроси у Андрея Мялина - может быть у него есть реализованный механизм получения инфы о структурах odbc-источников. Не получится - пиши мне лично, я дам библиотеку - там первые 4 пункта можно реализовать десятком строк кода. Ну и не нужен будет в приницпе доп.файл естественно.
-
- Ветеран движения
- Сообщения: 78
- Зарегистрирован: 04 Август 2005, 9:35
- Контактная информация:
- Ravenous
- Бывалый
- Сообщения: 58
- Зарегистрирован: 06 Июль 2005, 14:25
- Откуда: Москва
- Поблагодарили: 1 раз
В качестве примера могу порекомендовать
cwODBCsetup
Там хоть и для Access, но если воспользоваться ссылкой про DSNLess указанной ранее, то все должно получиться.
cwODBCsetup
Там хоть и для Access, но если воспользоваться ссылкой про DSNLess указанной ранее, то все должно получиться.

т.е. уже никто не пользует « КЛАСС DB3 для вывода и ввода информации в DBF-формате без использования драйверов Clarion. Автор: Юрий Философов»???
Библиотека предназначена именно для озвученных целей и ее можно забрать, например, здесь http://www.dvgu.ru/lemoi/clafaq/faqcgi.cgi
Библиотека предназначена именно для озвученных целей и ее можно забрать, например, здесь http://www.dvgu.ru/lemoi/clafaq/faqcgi.cgi