![]() |
|
Модераторы: Akina |
![]()
|
|
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Добрый день.
Мне нужно подключить к проекту на ВБ базу данных FoxPro. Как сделать в Аксесс - я знаю. Я создаю там БД и подключаю в свойствах контрола Data. А с ФоксПро я так не могу. Потому что он сейчас - 9 версии, а в ВБ поддержка только до 3. Я хотел создать с помощью Data Manager (Визуальный Менеджер Данных). Но там при создании ФоксПро (в отличие от Аксесс) не создается файл, а вводится имя базы, а потом вообще - непонятно что. Я вот хочу спросить - как мне создать эту базу? :( |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Поставить FoxPro и в нём создать. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Так ФоксПро сейчас - 9 версии. А в VB только FoxPro 3.0.
Это сообщение отредактировал(а) I_Am_Rock - 8.11.2009, 22:44 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
I_Am_Rock, тебе же сказали - через ODBC-драйвер. Хочешь, ADO используй, хочешь - DAO... у тебя 9 версия фокса? значит, и ODBC должен понимать эту версию.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
А он у меня есть? - этот драйвер. И как его подключить?
Допустим я создам в ФоксПро БД. Но как дальше? - чтобы контрол Data с ним работал... |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Чтобы заставить контрол работать с нужным источником данных, следует начать с чтения справки по самому контролу и его свойствам. Посмотреть примеры. И делать по образу и подобию. Искать этот контрол надо в подразделе Intristic Controls раздела Reference справки по VB6 в MSDN. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Ну, я сейчас вроде как решил эту проблему.
Я сделал так. Создал Базу данных в Вижуал ФоксПро. Создал Таблицу с полями и заполнил пару записей. Экспортировал в ФоксПро 3.0 (File -> Export...) Затем приступил к VB и поначалу всё пошло как по маслу - я разместил контрол на форме, выбрал файл с таблицей 3 версии фокса, разместил на форме три текстбокса, настроил их DataField DataSource. В итоге все запустилось и те две-три записи норм отображаются. А вот как решил сделать так, чтобы записи можно было новые добавить - так никак не могу и всё тут! Вроде как Data1.Recordset.AddNew должно работать, но ругается ошибкой 3027, мол только для чтения. Хотя свойство контрола риад-онли выставлено в фэлс и какого рожна ей еще надо - непонятно. :( Это все также - по поводу ФоксПро, так что думаю я не отошел от темы. Что делать? Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 00:44 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Контрол Data работает с рекордсетом. Ему плевать, по какой технологии и через какую библиотеку рекордсет создан, какого он типа и т.п. - все недопустимые для рекордсета операции заканчиваются ошибкой, которую контрол, не разбираясь, преподнесёт юзеру. Создай рекордсет, допускающий обновление и добавление, и укажи его контролу как источник данных. И будет тебе щастье. И не будет ошибок. И не надо будет формат преобразовывать. Это не в VB. Это в Jet. Используй иную технологию доступа к данным - и тебе будет сиренево до версии. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Путем научных изысканий я установил (красиво звучит, правда? Ну т.е., как ты и говоришь - рекордсет не допускает обновление и добавление. А как мне создать такой рекордсет, который допускал бы это? Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 16:31 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну наверное ручками создать и открыть такой рекордсет, а потом сказать контролу, что этот рекордсет и есть его источник данных.
-------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Пробую так
не хочет - так же ругается на реад-онли в строке rs.AddNew Я проверил - MsgBox rs.Updatable - пишет False А как, чтобы тру? :cry Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 17:16 |
||||
|
|||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Повторю ещё раз.
По наитию такие вещи не делают. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
||||||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Akina
Я пытаюсь изучать. Читаю на сайтах о методах и свойствах контрола. И вижу примеры применения. Но везде в примерах - Access. И видимо для фокспро нужно по-другому. Вот, например отсюда - http://www.eduhmao.ru/info/1/3655/22644/
Я адаптировал этот код под свой (наверху), а он не работает. Как я уже сказал - Updatable рекордсета стоит в False. |
||||||
|
|||||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Ну ты всё фигню какую-то читаешь.
Где собсно создаётся и открывается рекордсет? в строке
Вот и прочти справку по OpenRecordset - у него ж дохрена параметров! Разберись, для чего каждый из них, какие значения принимает и как они влияют на свойства рекордсета. PS. У тебя на рабочем столе есть корзина? выброси туда DAO и используй Adodb -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Akina, если у тебя есть хорошие ссылки на сайты, где есть хорошая инфа по свойстам и методам рекордсета DAO, то укажи их, пожалуйста.
Инфе об Adodb тоже буду рад. |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
http://msdn.microsoft.com/en-us/library/aa968814(VS.85).aspx
Там где-то рядом оно есть даже на русском - но искать откровенно лень. Поищи сам по какой-нить строке кода из примера, скажем. -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| Voldemar2004 |
|
||||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Окрой VB6, в меню Projects -> Components выбери MicroSoft ADO Data Control VB6 нарисуй на форме.
Потом опять же в меню Projects -> Components выбери DataGrid (если нужно править данные ручками в табличном объекте) или MSHFlexGrid (если нужно просто отображать результат запроса). Налепи их на форму. В свойствах объекта MSHFlexGrid1 выбери DataSource=Adodc1 - соединили - теперь при выборке данные будут отображаться в Гриде. Щелкни левой кнопой мыши по объекту Adodc - выбери св-во ConnectionString - щелкни по кнопочке с 3-мя точками - откроется Property Pages - выбери нижний пункт "Use Connection String" - щелкни по кнопке Build - затем выбери MicroSoft OLE DB Provider for ODBC Driver - нажми Далее - затем выбери "Использовать имя источника данных" - выбери свой формат (FoxPro) - затем введи начальный каталог - где лежит твоя БД - нажми кнопку Проверить подключение В результате свойство ConnectionString объекта Adodc1 должно быть: "Provider=MSDASQL.1;Persist Security Info=False;Data Source=Visual FoxPro Database" Затем выбери тип команд: свойство CommandType - если SQL-запрос - то AdCmdText - если табличный - то Table. Выбери adCmdText. Затем выбери свойство RecordSource - туда впиши свой SQL-запрос. Затем выполни код:
Еще есть свойства у объекта Adodc1 - Mode и LockType - выбери какой тип тебе нужен. Все вышеописанное можно проделать программным кодом, как делаю я:
-------------------- i_i (';') (V) ![]() |
||||
|
|||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
Это сообщение отредактировал(а) Voldemar2004 - 12.11.2009, 14:33 -------------------- i_i (';') (V) ![]() |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
http://www.connectionstrings.com/ -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
Voldemar2004
Большое спасибо за очень полезную инфу. Только два момента 1. когда я пытался создать КоннекшнСтринг с MicroSoft OLE DB Provider for ODBC Driver - он писал ошибку. Поэтому я выбрал MicroSoft OLE DB Provider for Visual FoxPro. Все остальное я сделал по инструкции - и заработало! Таблица норм отображается. 2. но она не редактируется! Пишет ошибку "Произошли ошибки во время выполнения многошаговой операции. Проверьте значения всех состояний." Почему так? Я ставил Mode в 3 - т.е. запись/чтение MSHFlexGrid я не нашел (юзал DataGrid) - как он точно называется? Akina, тебе также - большое спасибо! -------------- Еще 1 момент! Пробую
и он действительно добавляет новую строчку в таблице, но одновременно ругается ошибкой "Недостаточно сведений из основной таблицы для обновления" :( Это сообщение отредактировал(а) I_Am_Rock - 13.11.2009, 22:58 |
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
MSFlexGrid - Microsoft FlexGrid Control
MSHFlexGrid - Microsoft Hierarchical FlexGrid Control -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
А почему Voldemar2004 написал
ведь там таблица такого же типа? И вопрос с неизменяемостью данных остается актуальным. :( Это сообщение отредактировал(а) I_Am_Rock - 14.11.2009, 14:07 |
|||
|
||||
| Данкинг |
|
|||
![]() Yersinia pestis ![]() ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 8302 Регистрация: 7.11.2006 Где: მოსკოვი Репутация: нет Всего: 130 |
Да ладно уж. Конечно, "select * from TABLE" сработает в любых СУБД, но если составлять более сложные запросы, то по поводу абсолютной одинаковости я бы говорить поостерёгся. -------------------- There's nothing left but silent epitaphs. |
|||
|
||||
| Voldemar2004 |
|
|||
![]() Эксперт ![]() ![]() ![]() Профиль Группа: Завсегдатай Сообщений: 1650 Регистрация: 25.12.2004 Репутация: 7 Всего: 23 |
-------------------- i_i (';') (V) ![]() |
|||
|
||||
| I_Am_Rock |
|
|||
![]() Опытный ![]() ![]() Профиль Группа: Участник Сообщений: 523 Регистрация: 18.1.2008 Репутация: 12 Всего: 15 |
А по моим вопросам?
|
|||
|
||||
| Akina |
|
|||
|
Советчик ![]() ![]() ![]() ![]() Профиль Группа: Модератор Сообщений: 20581 Регистрация: 8.4.2004 Где: Зеленоград Репутация: 34 Всего: 454 |
Вы неправы, Данкинг совершенно верно говорит. Пока вы остаётесь в рамках стандарта, всё путём. Как только делаете шаг в сторону (а это сплошь и рядом) - тут же грабли. Не зря вся справка по, например, MS Jet SQL испещрена ремарками, что "это работает только в Jet". И со всеми другими так же... -------------------- О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума. |
|||
|
||||
![]()
|
| Правила форума "VB6" | |
|
|
Запрещается! 1. Публиковать ссылки на вскрытые компоненты 2. Обсуждать взлом компонентов и делиться вскрытыми компонентами
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina. |
| 0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей) | |
| 0 Пользователей: | |
| « Предыдущая тема | VB6 | Следующая тема » |
|
|
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности Powered by Invision Power Board(R) 1.3 © 2003 IPS, Inc. |