Текущее время: Вс, июл 27 2025, 23:59

Часовой пояс: UTC + 3 часа


Правила форума


ВНИМАНИЕ!

Вопросы по SAP Query и Quick View - сюда



Начать новую тему Ответить на тему  [ Сообщений: 7 ] 
Автор Сообщение
 Заголовок сообщения: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Пн, авг 30 2010, 15:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, фев 04 2009, 09:51
Сообщения: 421
Пол: Женский
Я читаю ДБФ файл через ОЛЕ! Но почемуто переменная eof не изменяется после get property of rs 'EOF' = eof. Постоянно пустое значение Хотя после этого она должна пиринимать "0"Хотя SY-subrc = 0 !!! Файл не читается хотя код возврата после каждого оператора SY_SUBRC = 0 Кроме get property of rs 'State' = state. Тут SY-subrc = 3 ???
В чем причина ? Что не верно? Подскажите!
WAY = 'e:\ЛЕАТ\файли леат\test.dbf'.

include ole2incl.
data: connection type ole2_object, rs type ole2_object
,connectionstring(500), state type i, sql(1000), eof
,time_begin like sy-uzeit, time_end like sy-uzeit.
concatenate 'Provider=vfpoledb;Data Source=' way ';' *
'Exclusive=No;BackgroundFetch=Yes;Collate=Machine;Null=Yes;'
'Deleted=Yes;' into connectionstring.
sql = 'SELECT * From test' .
create object connection 'adodb.connection'.
*create object connection 'adodb.connectionk'.
set property of connection 'ConnectionString' = connectionstring.
call method of connection 'Open'.
create object rs 'adodb.recordset'.
get property of rs 'State' = state.
if state = 1. call method of rs 'Close'.
endif.
set property of rs 'CursorType' = 1. "3
set property of rs 'LockType' = 1.
set property of rs 'CursorLocation' = 2. "2
set property of rs 'ActiveConnection' = connection.
call method of rs 'Open' exporting #1 = sql.
call method of rs 'MoveFirst'.
get property of rs 'EOF' = eof.
call method of rs 'Fields' = period exporting #1 = 'period'.

while eof = '0'.
get property of period 'Value' = itab-x1.

call method of rs 'MoveNext'.

get property of rs 'EOF' = eof.

append itab.
endwhile.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Пн, авг 30 2010, 16:39 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
Чаше всего проблема возникает еще на этапе настройки ODBC Data Source на рабочей станции. Проверьте правильность, правильно ли вы выбрали и настроили провайдера. Вы выбрали драйвер Foxpro (он настроен?), хотя в системе по умолчанию используется 'dBASE Files' для чтения DBF.
Второе, вы используете adodb connection, но насколько помню, этого провайдера нужно ставить отдельно и работал он с SQL базой, а не с DBF. (за это не ручаюсь, может в SAP этот драйвер универсальный)

Там есть вкладка Traicing, включите ее и посмотрите логи при коннекте из SAP.

Сравните ваш пример с рабочим (но это не DBF): SQL Server Connection and Data retrieving

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Вт, авг 31 2010, 06:11 
Младший специалист
Младший специалист

Зарегистрирован:
Вт, авг 05 2008, 19:46
Сообщения: 96
Откуда: С Урала
Из разработанного и не примененного
Code:
* создаем объекты
  CREATE OBJECT excel 'EXCEL.APPLICATION'.
  subrc1 '052'  .
*  SET PROPERTY OF excel 'Visible'    = 1.
  CALL METHOD OF excel 'Workbooks' = h_book.
  subrc1 '053'  .
  CALL METHOD OF h_book 'Add'.
  subrc1 '053' .
  CALL METHOD OF excel 'Worksheets' = h_sheet
    EXPORTING #1 = 'Лист1'.
  subrc1 '053' .
  CALL METHOD OF h_sheet 'Activate'.
  subrc1 '053' .
  SET PROPERTY OF excel 'DisplayAlerts' = 'False'.
  subrc1 '054' .
  GET PROPERTY OF excel 'ActiveWorkBook' = h_book.
  subrc1 '054' .
* сохраняем книгу
  CALL METHOD OF h_book 'SAVEAS'
    EXPORTING #1 = lc_temp.
  subrc1 '053' .
  SET PROPERTY OF excel 'DisplayAlerts' = 'True'.
  subrc1 '054' .
  connectionstring  = 'ODBC;DSN=dBASE Files;DefaultDir=C:\;DriverId=533;MaxBufferSize=2048;PageTimeout=5;'.
* создаем соединение и строим запрос к БД
  CONCATENATE 'SELECT NEWNUM as BANKL, NEWNUM as bnklz, NAMEP as banka , NNP as ort01, KSNP as BRNCH, ADR as STRAS FROM '
               tab_file-filename INTO sql SEPARATED BY space.
  CALL METHOD OF h_sheet 'Range' = h_range
    EXPORTING #1 = 'A1'.
  subrc1 '053' .
  CALL METHOD OF h_range 'WorkSheet' = h_tables.
  subrc1 '053' .
  CALL METHOD OF h_tables 'QueryTables' = h_tables.
  subrc1 '053' .
  CALL METHOD OF h_tables 'Add' = h_table
    EXPORTING
    #1 = connectionstring
    #2 = h_range
    #3 = sql.
  subrc1 '053'.
  SET PROPERTY OF h_table 'AdjustColumnWidth' = 0.
  subrc1 '054' .
  SET PROPERTY OF h_table 'RefreshStyle' = 0.
  subrc1 '054'.
* считываем данные из БД
  CALL METHOD OF h_table 'Refresh'.
  subrc1 '053' .
*** вставляем задержку
  WAIT UP TO '1.200' SECONDS.
  CALL METHOD OF h_table 'Delete'.
  subrc1 '053' .
  CALL FUNCTION 'FLUSH'
    EXCEPTIONS
      OTHERS = 1.
  IF sy-subrc NE 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ENDIF.
** Удаляем запрос из книги (данные остаются)
  GET PROPERTY OF  h_sheet 'UsedRange' = h_over.
  GET PROPERTY OF  h_over  'Rows'      = h_over1.
  GET PROPERTY OF h_over1  'Count'     = lc_count.   "определяем к-во записей в запросе
  IF lc_count < 2.     " на всякий случай если ошибемся
    lc_count =  9999.
  ENDIF.
* Close  и выходим из Excel
  CALL METHOD OF h_book 'SAVE'.
  subrc1 '053'.
  CALL METHOD OF h_book 'CLOSE'.
  subrc1 '053' .
  CALL METHOD OF excel 'QUIT'.
  subrc1 '053' .
  free_ole.
  WAIT UP TO '0.200' SECONDS.
**** Считываем данные в таблицу
  CALL FUNCTION '****EXCEL_TO_INTERNAL_TABLE'
    EXPORTING
      m_file_name             = lc_temp
      i_begin_col             = 1
      i_begin_row             = 1
      i_end_col               = 6
      i_end_row               = lc_count
    TABLES
      ch_data                 = lt_bnka
    EXCEPTIONS
      inconsistent_parameters = 1
      upload_ole              = 2
      read_failed             = 3
      OTHERS                  = 4.
  IF sy-subrc <> 0.
    MESSAGE ID sy-msgid TYPE sy-msgty NUMBER sy-msgno
             WITH sy-msgv1 sy-msgv2 sy-msgv3 sy-msgv4.
  ELSE.
    IF lt_bnka IS NOT INITIAL .
      LOOP AT lt_bnka INTO wa_loc.
        CLEAR wa_itab.
        MOVE-CORRESPONDING wa_loc TO wa_itab.
        APPEND  wa_itab TO itab_bnka.
      ENDLOOP.
    ENDIF.
  ENDIF.

Хотя более отработанным способом считаю ( и пользуюсь) созранением через Excel в текстовый файл и его стандартной загрузкой - быстрее во мног раз


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Вт, авг 31 2010, 10:01 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, фев 04 2009, 09:51
Сообщения: 421
Пол: Женский
Уважаемый Директор Вы написали
Вы выбрали драйвер Foxpro (он настроен?), хотя в системе по умолчанию используется 'dBASE Files' для чтения DBF.

Подскажите в каком месте настроек системы можно поменять значение по умолчанию для чтения DBF ????


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Вт, авг 31 2010, 14:13 
Председатель
Председатель
Аватара пользователя

Зарегистрирован:
Чт, апр 13 2006, 12:32
Сообщения: 1503
Откуда: Питер
oko_5 написала:
Подскажите в каком месте настроек системы можно поменять значение по умолчанию для чтения DBF ????


Добрый день. Я прошу прощения, но раз вы задаете такой вопрос, видимо код был вами просто откуда то скопирован и вы не очень разбираетесь в выбранной вами технологии. Не обижайтесть. Если вы будете менять настройки ODBC Data Source, то это придется делать на каждой клиентской машине, чтобы ваша программа могла работать у любого пользователя.

Поэтому я бы рекомендовал использовать более простой вариант, загрузить dbf файл с локального компьютера во внутреннюю таблицу и далее выполнить преобразование.
http://www.sapnet.ru/viewtopic.php?t=1240&highlight=dbf
Или использовать Excel (есть ограничения по количеству строк и длине полей)
http://www.sapnet.ru/viewtopic.php?t=835&highlight=dbf

А OBDC Data Source настраивается в Windows: Settings - Control Panel - Administrative Tools - Data Source (ODBC)

_________________
С уважением, VGA
Мой блог


Принять этот ответ
Вернуться к началу
 Профиль  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Ср, сен 01 2010, 16:25 
Старший специалист
Старший специалист

Зарегистрирован:
Ср, фев 04 2009, 09:51
Сообщения: 421
Пол: Женский
Cпасибо! Переинстал виндовс и все пошло !Был запорчен ODBC я думаю программой DBFCOMANDER запорчена библиотека VFPOLEDB.DLL!
Теперь следующая проблема!
В ДБФ файле поля числвые Так почему-то переносятся нули !
data: begin of itab occurs 100,
x1 type і.
data: end of itab.

get property of period 'Value' = itab-x1.

itab-x1 =0 Хотя в ДБФ файле это числовое поле поле имеет не нулевое значение !
Почему?Не хочется в ДВФ делать все символьные поля!


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
 Заголовок сообщения: Re: Загрузка з файла *.DBF в таблицу
СообщениеДобавлено: Чт, янв 10 2013, 15:07 
Специалист
Специалист

Зарегистрирован:
Ср, дек 07 2005, 09:18
Сообщения: 141
Откуда: Запорожье
Добрый день.
Если кто разбирался с этой тема, то возник такой вопрос.
В считываемом файле (DBF) есть одно поле цифровое, и преобразованние данным кодом http://www.sapnet.ru/viewtopic.php?t=1240&highlight=dbf выдает абсолютно неверные данны. Если вместо цифровых подставить символом значения ввиде 2547,02 то преобразования получаются красиво.
А если использовать преобразование по этомоу методу http://www.sapnet.ru/viewtopic.php?t=835&highlight=dbf через Excel поля в которых записаны данные в Кирилеце выводятся ввиде знаков вопроса (?????????????).

Вот теперь не знаю как поступить, и какой метод использовать.
Если кто поборол данные вещи как у меня, поделитесь советом, как это сделать.


Принять этот ответ
Вернуться к началу
 Профиль Отправить email  
 
Показать сообщения за:  Поле сортировки  
Начать новую тему Ответить на тему  [ Сообщений: 7 ] 

Часовой пояс: UTC + 3 часа


Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей


Вы не можете начинать темы
Вы не можете отвечать на сообщения
Вы не можете редактировать свои сообщения
Вы не можете удалять свои сообщения
Вы не можете добавлять вложения

Найти:
Перейти:  
cron
Powered by phpBB © 2000, 2002, 2005, 2007 phpBB Group
Русская поддержка phpBB