Автор Тема: XBase - вставить строку  (Прочитано 2774 раз)

0 Пользователей и 1 Гость просматривают эту тему.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
XBase - вставить строку
« : 25 Октября 2004, 10:36:21 »
Доброго времени суток!!!

Понадобился скрипт для переноса данных из MS Access в DBase.

Для подключения к MS Access использовал DBD::ODBC
Для подключения к DBase использовал DBD::XBase

С MS Access базой - проблем никаких нет, а вот с DBase возникла проблема при вставке строки. Выборка обновление и удаление работают на ура...

И самое интересное, что просматривая базу в текстовом режиме, видно что эти данные он записал, но в самой базе их нет...

Попробовал зацепиться к DBase через, ODBC... Insert заработал, но при этом потерялась кодировка, т.е. все кириллические символы стали знаками "?"
Использование Unicode::String - тоже результатов не дало... вопросы пропали, но текст русский не появился...

Есть еще зверь такой XBase, но дошел только до получения параметров таблицы...

Оффлайн BonJorno

  • Завсегдатай
  • Пользователь
  • **
  • Сообщений: 52
  • +0/-0
  • 0
    • Просмотр профиля
    • http://
XBase - вставить строку
« Ответ #1 : 26 Октября 2004, 07:43:43 »
При написании курсовой на Delphi у меня была схожая проблема, точный рецепт уже не помню, но кажется приходилось закреплять query методом Post (или Append, вобщем надо где-то исходники поискать), возможно у DBD::XBase есть эти дополнительные методы?
А насчет кодировки, то в Access она чаще всего win1251, а в базах типа *.dbf и прочих Dos866.
В таких случаях я пользуюсь модулем Cyrillic (qw/dos2win win2dos/), очень удобно.
И встречный вопрос, у меня проблема с выборкой из Ассess, если в селекте выбирается среди прочих поле типа Boolean (которое в базе показывается галочкой при true), то селект ничего не возвращает. Как можно получить это поле? Ума не приложу, по всякому бился.

Оффлайн Phoinix

  • RW
  • Ветеран
  • *****
  • Сообщений: 1097
  • +0/-0
  • 2
    • Просмотр профиля
    • http://phoinix.ucoz.ru
XBase - вставить строку
« Ответ #2 : 26 Октября 2004, 09:45:40 »
BonJorno
Цитировать
если в селекте выбирается среди прочих поле типа Boolean (которое в базе показывается галочкой при true), то селект ничего не возвращает.

Select возвращает 0 или 1, 0 - равносильно undef поэтому после селекта нужно делать проверку на существование (инициализацию) данной переменной.

my $sth = $dbh_odbc -> prepare("SELECT * FROM my_table...");
$sth -> execute();
while (my $row = $sth -> fetchrow_hashref()) {
    $$row{\'boolean\'} = $$row{\'boolean\'} ? \'True\' : \'False\';
    ...
}
$sth -> finish();

А насчет кодировки, спасибо, попробую...

 

Sitemap 1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28