Модераторы: Akina

Поиск:

Ответ в темуСоздание новой темы Создание опроса
> FoxPro в Visual Basic 
:(
    Опции темы
I_Am_Rock
Дата 8.11.2009, 21:57 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Добрый день.

Мне нужно подключить к проекту на ВБ базу данных FoxPro.

Как сделать в Аксесс - я знаю. Я создаю там БД и подключаю в свойствах контрола Data.

А с ФоксПро я так не могу. Потому что он сейчас - 9 версии, а в ВБ поддержка только до 3.
Я хотел создать с помощью Data Manager (Визуальный Менеджер Данных). Но там при создании ФоксПро (в отличие от Аксесс) не создается файл, а вводится имя базы, а потом вообще - непонятно что.

Я вот хочу спросить - как мне создать эту базу? :(
PM MAIL WWW   Вверх
Данкинг
Дата 8.11.2009, 22:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Yersinia pestis
****


Профиль
Группа: Завсегдатай
Сообщений: 8302
Регистрация: 7.11.2006
Где: მოსკოვი

Репутация: нет
Всего: 130



Цитата(I_Am_Rock @  8.11.2009,  21:57 Найти цитируемый пост)
как мне создать эту базу?

Поставить FoxPro и в нём создать. smile Ну или через ODBC вроде как-то можно тоже.


--------------------
There's nothing left but silent epitaphs.
PM MAIL WWW   Вверх
I_Am_Rock
Дата 8.11.2009, 22:43 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Так ФоксПро сейчас - 9 версии. А в VB только FoxPro 3.0.

Это сообщение отредактировал(а) I_Am_Rock - 8.11.2009, 22:44
PM MAIL WWW   Вверх
Akina
Дата 8.11.2009, 22:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



I_Am_Rock, тебе же сказали - через ODBC-драйвер. Хочешь, ADO используй, хочешь - DAO... у тебя 9 версия фокса? значит, и ODBC должен понимать эту версию.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 8.11.2009, 23:01 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



А он у меня есть? - этот драйвер. И как его подключить?
Допустим я создам в ФоксПро БД. Но как дальше? - чтобы контрол Data с ним работал...

 smile 
PM MAIL WWW   Вверх
Akina
Дата 8.11.2009, 23:53 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(I_Am_Rock @  9.11.2009,  00:01 Найти цитируемый пост)
как дальше? - чтобы контрол Data с ним работал...

Чтобы заставить контрол работать с нужным источником данных, следует начать с чтения справки по самому контролу и его свойствам. Посмотреть примеры. И делать по образу и подобию.
Искать этот контрол надо в подразделе Intristic Controls раздела Reference справки по VB6 в MSDN.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 9.11.2009, 00:42 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Ну, я сейчас вроде как решил эту проблему.
Я сделал так.

Создал Базу данных в Вижуал ФоксПро.
Создал Таблицу с полями и заполнил пару записей.
Экспортировал в ФоксПро 3.0 (File -> Export...)

Затем приступил к VB и поначалу всё пошло как по маслу - я разместил контрол на форме, выбрал файл с таблицей 3 версии фокса, разместил на форме три текстбокса, настроил их DataField DataSource.
В итоге все запустилось и те две-три записи норм отображаются.

А вот как решил сделать так, чтобы записи можно было новые добавить - так никак не могу и всё тут!
Вроде как Data1.Recordset.AddNew должно работать, но ругается ошибкой 3027, мол только для чтения. Хотя свойство контрола риад-онли выставлено в фэлс и какого рожна ей еще надо - непонятно. :(

Это все также - по поводу ФоксПро, так что думаю я не отошел от темы. smile

Что делать?  smile 

Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 00:44
PM MAIL WWW   Вверх
Akina
Дата 9.11.2009, 09:15 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Цитата(I_Am_Rock @  9.11.2009,  01:42 Найти цитируемый пост)
Что делать?

Контрол Data работает с рекордсетом. Ему плевать, по какой технологии и через какую библиотеку рекордсет создан, какого он типа и т.п. - все недопустимые для рекордсета операции заканчиваются ошибкой, которую контрол, не разбираясь, преподнесёт юзеру.
Создай рекордсет, допускающий обновление и добавление, и укажи его контролу как источник данных. И будет тебе щастье. И не будет ошибок. И не надо будет формат преобразовывать.

Цитата(I_Am_Rock @  8.11.2009,  23:43 Найти цитируемый пост)
в VB только FoxPro 3.0

Это не в VB. Это в Jet. Используй иную технологию доступа к данным - и тебе будет сиренево до версии.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 9.11.2009, 16:18 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Цитата(Akina @  9.11.2009,  09:15 Найти цитируемый пост)
Контрол Data работает с рекордсетом. Ему плевать, по какой технологии и через какую библиотеку рекордсет создан, какого он типа и т.п. - все недопустимые для рекордсета операции заканчиваются ошибкой, которую контрол, не разбираясь, преподнесёт юзеру.Создай рекордсет, допускающий обновление и добавление, и укажи его контролу как источник данных. И будет тебе щастье. И не будет ошибок. И не надо будет формат преобразовывать.

Путем научных изысканий я установил (красиво звучит, правда?  smile  ), что причина в том, что Data1.Recordset.Updatable равно False (в отличие от Data1.ReadOnly и Data1.Database.Updatable, которые стоят в False и True соответственно).

Ну т.е., как ты и говоришь - рекордсет не допускает обновление и добавление.

А как мне создать такой рекордсет, который допускал бы это?  smile 

Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 16:31
PM MAIL WWW   Вверх
Akina
Дата 9.11.2009, 16:34 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну наверное ручками создать и открыть такой рекордсет, а потом сказать контролу, что этот рекордсет и есть его источник данных.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 9.11.2009, 17:14 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Цитата(Akina @  9.11.2009,  16:34 Найти цитируемый пост)
Ну наверное ручками создать и открыть такой рекордсет, а потом сказать контролу, что этот рекордсет и есть его источник данных.

Пробую так 

Код

Dim rs As DAO.Recordset 
Dim sSQL As String 
sSQL = "SELECT * FROM mytable;"
Set rs = Data1.Database.OpenRecordset(sSQL)

rs.AddNew
rs("NOMER") = "3" 
rs("NAZVANIE") = "bla-bla"
rs("TEKST") = "ha-ha"
rs.Update 


не хочет - так же ругается на реад-онли в строке rs.AddNew

Я проверил - MsgBox rs.Updatable - пишет False 

А как, чтобы тру? :cry

Это сообщение отредактировал(а) I_Am_Rock - 9.11.2009, 17:16
PM MAIL WWW   Вверх
Akina
Дата 9.11.2009, 20:12 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Повторю ещё раз.
Цитата(Akina @  9.11.2009,  00:53 Найти цитируемый пост)
следует начать с чтения справки по самому контролу и его свойствам. Посмотреть примеры

По наитию такие вещи не делают.


--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 10.11.2009, 20:52 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Akina

Я пытаюсь изучать. Читаю на сайтах о методах и свойствах контрола. И вижу примеры применения.
Но везде в примерах - Access. И видимо для фокспро нужно по-другому.

Вот, например отсюда - http://www.eduhmao.ru/info/1/3655/22644/

Цитата

Для добавления и изменения записей используется похожая технология.
При добавлении записи открываем рекордсет. 
Код

Dim db As DAO.Database 'Объявляем базу данных
Dim rs As DAO.Recordset 'Объявляем рекордсет
Dim sSQL As String 'Переменная, где будет размещён SQL запрос
Set db = DAO.OpenDatabase ("C:\db.mdb")
sSQL = "SELECT * FROM Orders;"
Set rs = db.OpenRecordset (sSQL)


Для добавления записи используется метод AddNew объекта типа Recordset.
Код

rs.AddNew


Теперь запись добавлена, и мы заполняем все поля для данной записи.


Я адаптировал этот код под свой (наверху), а он не работает.
Как я уже сказал - Updatable рекордсета стоит в False.  
smile 
PM MAIL WWW   Вверх
Akina
Дата 10.11.2009, 23:51 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Советчик
****


Профиль
Группа: Модератор
Сообщений: 20581
Регистрация: 8.4.2004
Где: Зеленоград

Репутация: 34
Всего: 454



Ну ты всё фигню какую-то читаешь.
Где собсно создаётся и открывается рекордсет? в строке
Код

Set rs = db.OpenRecordset(sSQL)

Вот и прочти справку по OpenRecordset - у него ж дохрена параметров! Разберись, для чего каждый из них, какие значения принимает и как они влияют на свойства рекордсета.

PS. У тебя на рабочем столе есть корзина? выброси туда DAO и используй Adodb



--------------------
 О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.

PM MAIL WWW ICQ Jabber   Вверх
I_Am_Rock
Дата 11.11.2009, 21:55 (ссылка) | (нет голосов) Загрузка ... Загрузка ... Быстрая цитата Цитата


Опытный
**


Профиль
Группа: Участник
Сообщений: 523
Регистрация: 18.1.2008

Репутация: 12
Всего: 15



Akina, если у тебя есть хорошие ссылки на сайты, где есть хорошая инфа по свойстам и методам рекордсета DAO, то укажи их, пожалуйста.  smile 
Инфе об Adodb тоже буду рад. 
PM MAIL WWW   Вверх
Ответ в темуСоздание новой темы Создание опроса
Правила форума "VB6"
Akina

Запрещается!

1. Публиковать ссылки на вскрытые компоненты

2. Обсуждать взлом компонентов и делиться вскрытыми компонентами

  • Литературу по VB обсуждаем здесь
  • Действия модераторов можно обсудить здесь
  • С просьбами о написании курсовой, реферата и т.п. обращаться сюда
  • Вопросы по реализации алгоритмов рассматриваются здесь
  • Используйте теги [code=vb][/code] для подсветки кода. Используйтe чекбокс "транслит" (возле кнопок кодов) если у Вас нет русских шрифтов.


Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, Akina.

 
0 Пользователей читают эту тему (0 Гостей и 0 Скрытых Пользователей)
0 Пользователей:
« Предыдущая тема | VB6 | Следующая тема »


 




[ Время генерации скрипта: 0.0716 ]   [ Использовано запросов: 22 ]   [ GZIP включён ]


Реклама на сайте     Информационное спонсорство

 
По вопросам размещения рекламы пишите на vladimir(sobaka)vingrad.ru
Отказ от ответственности     Powered by Invision Power Board(R) 1.3 © 2003  IPS, Inc.