powered by simpleCommunicator - 2.0.53     © 2025 Programmizd 02
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подключение к базе Access
16 сообщений из 16, страница 1 из 1
Подключение к базе Access
    #37894896
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Неожиданно возникла задача, есть база в Access, к ней надо подключиться из VFP, поискав в инете, ничего не нашёл, помню что-то такое было в книге Базиняна, но поискав её в инете, тоже не нашёл, как-то не пользовался базами данных в VFP, всё free table, поэтому посоветуйте ссылку, где можно про это почитать,
Что сделал, так это
1 Создал проект
2 В проекте создал базу данных
3 создал соединение(но почему то Connection Disigner, не спросил имя и путь базы данных Access, только тип )
Что надо дальше делать, чтоб увидеть данные Access в VFP
В каком файле(записи) он прописывает параметры этого Connection, чтоб можно было эту строчку прописать в программу и работать без Базы данных VFP
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37894914
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
как-то так:
Код: sql
1.
2.
3.
4.
5.
6.
7.
8.
lcMDB = 'c:\MyBase.mdb' && база акцеса
lnHandle = SQLStringConnect("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + lcMDB + ";UID=admin;")
if lnHandle > 0
   if SQLExec(lnHandle, "select * from MyAccessTable", 'tresult') > 0
      sele tresult
      brow
   endif
endif


Еще есть курсорадаптеры.
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37894953
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо....
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37895007
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
что-то фигня какая-то, везде где есть данные, попали в memo поле...
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37895035
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Длина записи в Access?
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37895036
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1что-то фигня какая-то, везде где есть данные, попали в memo поле...
Если строка в акцесовской таблице более 254 символов - то фокс ее в мемополе помещает, т.к. не влазит.
Если можно обрезать, то делай так
Код: sql
1.
select left(MyField, 254) as MyField
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37895096
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
вот примерный код
lcMDB = "c:\st\адресаты с (з).mdb" && база акцеса
lnHandle = SQLStringConnect("Driver={Microsoft Access Driver (*.mdb)};DBQ=" + lcMDB)
*+ ";UID=admin;"
if lnHandle > 0
if SQLExec(lnHandle, 'select PADR(alltrim("Организация"),100," ") as org from Office_Address', 'tresult') > 0
sele tresult
brow
ENDIF
ELSE
MESSAGEBOX("Ошибка")
endif
PADR(alltrim("Организация"),100," ") - с этим выражением результата нет
left("Организация",100), результат есть, но поле Memo
в базе акцесса тип поля "Организация", Текстовый, 255
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37895122
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1PADR(alltrim("Организация"),100," ") - с этим выражением результата нет
left("Организация",100), результат есть, но поле Memo
в базе акцесса тип поля "Организация", Текстовый, 255
alltrim() - это фоксовая фунция. Ацесс ее не знает.
попробуй
Код: sql
1.
select cast(Организация as CHAR(100)) as Организация ...



И если результата нет - смотри ошибку:
Код: sql
1.
2.
aerror(laErr)
MessageBox(laErr[1,2] + ' (' + str(laErr[1,1]) + ')')
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897143
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897431
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Функции cast в access тоже нет. Можно использовать Left, как уже было написано.
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897471
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
да я понял, не знаю как этот select написать, чтоб он в Memo поле не вводил информацию, конечно можно в VFP пройтись по Memo полям и извлечь оттуда в символьное поле...но это уже в крайнем случае, пока разбираюсь...
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897476
Ffffffffffffffff
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
select left(MyField, 254) as MyField, left(MyField1, 254) as MyField1
и т.д.
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897573
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Поэксперементировал - похоже самое простое это уменьшить размер поля в акцессе до 254.
Второй вариант - попробовать использовать курсорадаптер и там явно указывать тип поля С(254)
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897635
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
спасибо..., за всё хватаешься, ничего не успеваешьь, всё так просто, уменьшил длинув Accesse(пока никто не заметил...), но странное дело...
SQLExec(lnHandle, 'select "Организация" as org from Office_Address', 'tresult') нормально, а
SQLExec(lnHandle, 'select left("Организация",100) as org from Office_Address', 'tresult'), появляется поле Memo, надо почитать Access, можеть left не обрезает, а добавляет 100 символов...
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897650
Dima T
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
q1w1e1спасибо..., за всё хватаешься, ничего не успеваешьь, всё так просто, уменьшил длинув Accesse(пока никто не заметил...)
Скорее всего и не заметят. Access при создании текстового поля 255 предлагает. Скорее всего просто оставили не задумываясь.
q1w1e1, но странное дело...
SQLExec(lnHandle, 'select "Организация" as org from Office_Address', 'tresult') нормально, а
SQLExec(lnHandle, 'select left("Организация",100) as org from Office_Address', 'tresult'), появляется поле Memo, надо почитать Access, можеть left не обрезает, а добавляет 100 символов...
Тут наверно кривизна ODBC-драйвера. left() обрезает. Сделай left("Организация",1) и посмотри что одна буква в мемополе осталась.
...
Рейтинг: 0 / 0
Подключение к базе Access
    #37897699
q1w1e1
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да, так и есть одна буква, спасибо...
...
Рейтинг: 0 / 0
16 сообщений из 16, страница 1 из 1
Форумы / FoxPro, Visual FoxPro [игнор отключен] [закрыт для гостей] / Подключение к базе Access
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]