powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Импорт из dbf
36 сообщений из 36, показаны все 2 страниц
Импорт из dbf
    #34804067
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Всем, привет.
Помогите пожалуйста. к сожалению я в PowerBuilder - чайник :(
Но нужно ... и к сожалению срочно ...
как сделать импорт из dbf файла ?
нашла пример http://pbl.narod.ru/pblsrv.htm
там такой код
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
string ls_FileName, ls_PathName
ds_dbf lds_dbf
blob lbl_dbf
lds_dbf = create ds_dbf
if GetFileOpenName("Select File", ls_filename, ls_pathname, "DBF",  "dBase Files (*.dbf),*.dbf") <  0  then return - 1 

parent.title = 'Contents of ' + ls_PathName

messagebox('read',lds_dbf.of_ReadFile(ls_pathName))

lds_dbf.GetFullState(lbl_dbf)
dw_1.SetFullState(lbl_dbf)

return  1 

приложение в котором править нужно на PowerBuilder6 ...
пример ругается на
Код: plaintext
messagebox('read',lds_dbf.of_ReadFile(ls_pathName))
говорит: DataWindow syntax has incorrect release number. Видимо не для 6го ...
может кто поправит как это сделать в 6м? или своим кодом поделиться?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804137
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Подключитесь к своему dbf как к источнику данных при помощи второго transaction object и работайте с ним.
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804178
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, а можно по подробнее?
К сожалению с PowerBuilder столкнулась совсем недавно ...
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804205
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну что-нибудь типа
Код: plaintext
1.
2.
3.
ltr = create Transaction
ltr.DBMS = "ODBC"
ltr.AutoCommit = false
ltr.DBParm = "ConnectString='DSN=ИмяDSNИсточника;UID=;PWD=',CommitOnDisconnect='No'"
и дальше что-нибудь типа
Код: plaintext
select ... using ltr
или
Код: plaintext
1.
dw_1.SetTRansObject(ltr)
dw_1.Retrieve()
Можно попробовать через функцию DataWindow ImportFile(...) вставить.
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804212
Фотография urvas
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
transaction ltr_source
transaction ltr_target
string ls_inifile = "convert.ini"
string ls_pipeline[]
pipeline lpipe_pipe
integer li_item
integer li_pipes
integer li_error


hpb_progress.Visible = false
SetPointer(HourGlass!)

lpipe_pipe = CREATE pipeline

ls_pipeline[1] = "act_type"
ls_pipeline[2] = "adress"
// список сокращен
ls_pipeline[41] = "workers"

f_show_log( mle_log, 'Создаю объекты транзакций' )

ltr_source = create transaction
ltr_target = create transaction


//[Source]
ltr_source.DBMS = ProfileString ( ls_inifile, "Source", "DBMS", "") //"ODBC"
ltr_source.DbParm = ProfileString ( ls_inifile, "Source", "DBParm", "") //"ConnectString='DSN=prg;UID=sa'"

//[Target]
ltr_target.DBMS = ProfileString ( ls_inifile, "Target", "DBMS", "")
ltr_target.LogId = ProfileString ( ls_inifile, "Target", "LogID", "")
ltr_target.LogPass = ProfileString ( ls_inifile, "Target", "LogPassword", "")
ltr_target.ServerName = ProfileString ( ls_inifile, "Target", "Servername", "")

f_show_log( mle_log, 'Соединяюсь с базами' )
CONNECT USING ltr_source;
CONNECT USING ltr_target;

li_pipes = UpperBound( ls_pipeline )
for li_item = 1 to li_pipes
f_show_log( mle_log, 'Импортируется таблица - ' + ls_pipeline[ li_item ] )
lpipe_pipe.DataObject = ls_pipeline[ li_item ]
li_error = lpipe_pipe.Start(ltr_source, ltr_target, dw_1)
if li_error = 1 then
f_show_log( mle_log, 'Таблица ' + Upper( ls_pipeline[ li_item ] ) + ' импортирована.' )
else
f_show_log( mle_log, 'При импорте таблицы ' + Upper( ls_pipeline[ li_item ] ) + ' возникли ошибки.~n~nКод ошибки - ' + string(li_error) )
end if
next


hpb_progress.OffsetPos ( 100 )

f_show_log( mle_log, 'Разъединяюсь с базами' )

DISCONNECT USING ltr_source;
DISCONNECT USING ltr_target;

destroy ltr_source
destroy ltr_target

destroy lpipe_pipe


MessageBox("Внимание!","Процесс импорта закончен")

hpb_progress.Visible = false
f_show_log( mle_log, 'Процесс импорта закончен' )
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804249
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka
приложение в котором править нужно на PowerBuilder6 ...
пример ругается на
Код: plaintext
messagebox('read',lds_dbf.of_ReadFile(ls_pathName))
говорит: DataWindow syntax has incorrect release number. Видимо не для 6го ...
может кто поправит как это сделать в 6м? или своим кодом поделиться?

Откройте объект ds_dbf, в нем функцию of_ReadFile и замените Release 7 на Release 6
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804561
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин МаркНу что-нибудь типа
Код: plaintext
1.
ltr = create Transaction
ltr.DBMS = "ODBC"
...

Через ODBC - не вариант ...

Anatoly Moskovsky
Откройте объект ds_dbf, в нем функцию of_ReadFile и замените Release 7 на Release 6

Спасибо :)
Пример действительно после этого заработал, пробую перенести это в свою :)
при переносе функции of_readfile ругается на
Код: plaintext
1.
2.
3.
4.
/* Create the dataobject from the final syntax */
This.create(ls_syntax)

/* import the data now into the created dataobject */
return This.ImportFile(as_FileName)

говорит что create и ImportFile - unknown function name ... а где this определить?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34804581
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka
при переносе функции of_readfile ругается на
Код: plaintext
1.
2.
3.
4.
/* Create the dataobject from the final syntax */
This.create(ls_syntax)

/* import the data now into the created dataobject */
return This.ImportFile(as_FileName)

говорит что create и ImportFile - unknown function name ... а где this определить?
create и ImportFile - это методы DataWindow или DataStore. Видимо тот объект, куда Вы перенесли код, не является ни тем ни другим
...
Рейтинг: 0 / 0
Импорт из dbf
    #34818642
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
c примером http://pbl.narod.ru/pblsrv.htm так ничего и не получилось, мой файл он считывать не хочет.
но через ODBC все замечательно работает :)
спасибо!
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821108
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Извините, ранно радовалась :)
еще одна ма-а-а-аленькая проблемка ...
все нормально считывалось пока открывала файлы из C:\temp ... а вот как с рабочего стола захотели
... отказывается ... не нравятся ему длинные выдает ошибку
---------------------------
ls_err
---------------------------
SQLSTATE = 37000

[Microsoft][Драйвер ODBC dBase] Недопустимое имя ''C:\Documents and Settings\nata\Рабочий стол\dbf\i291206.DBF''. Проверьте, что оно не содержит недопустимые символы или знаки препинания, а также не является слишком длинным.
---------------------------
ОК
---------------------------
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821119
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka wrote:

> все нормально считывалось пока открывала файлы из C:\temp ... а вот как
> с рабочего стола захотели
> ... отказывается ... не нравятся ему длинные выдает ошибку

Баян. Не пользуйся длинными именами.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821440
gnatochka
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim2000
gnatochka wrote:
Баян. Не пользуйся длинными именами.
Posted via ActualForum NNTP Server 1.4

А как быть?
юзеры хотят "взять файлик с рабочего стола и не заморачиваться"
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821487
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochka wrote:

> А как быть?
> юзеры хотят "взять файлик с рабочего стола и не заморачиваться"

Засунуть юзерам их хотелку не буду уточнять куда и объяснить им, каким
должно быть название файла и имя папки. Это вполне реально - я так уже
сделал.
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821521
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
GetShortPathName попробовать?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821582
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк wrote:

> GetShortPathName

1. Не поможет. В коротком имени м.б. кириллица (а если Винда русская, то
она в "Рабочем столе" обязательно будет), что недопустимо.
2. Автор топика ниасилит ;).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821690
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Dim20001. Не поможет. В коротком имени м.б. кириллица (а если Винда русская, то
она в "Рабочем столе" обязательно будет), что недопустимо.
Подобрать другой драйвер. Например с драйвером PB DATADIRECT OEM такой проблемы нет...
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821773
Dim2000
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Локшин Марк wrote:

> Подобрать другой драйвер.

Проще юзеров построить .

> Например с драйвером PB DATADIRECT OEM такой проблемы нет...

Есть. Я, собственно, на нём и тестирую ;).
Posted via ActualForum NNTP Server 1.4
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821812
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
gnatochkaА как быть?
юзеры хотят "взять файлик с рабочего стола и не заморачиваться"
у меня вроде работало, покажи код ?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821874
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
только что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821893
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexis glinskiтолько что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
Можно пример, как путь указываете в ConnectString транзакции?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821975
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Надо просто сконвертировать в вылидное имя
API-функция по-моему GetShortName (точнее не скажу, давно использовал) и все будет хорошо:)
Функция GetShortName в качестве входного параметра принимает длинное имя файла и возвращает DOS-имя файла
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Импорт из dbf
    #34821982
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Sorry, valid name, а не "вылидное" имя
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Импорт из dbf
    #34822141
Локшин Марк
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly MoskovskyМожно пример, как путь указываете в ConnectString транзакции?
Что-то типа такого
Код: plaintext
SQLCA.DBParm = "ConnectString='DSN=test;UID=;PWD='"
а сам путь - в свойствах ODBC подключения.
Dim2000Есть. Я, собственно, на нём и тестирую ;).
Ну а у меня все работает, я это собственно уже только что протестировал. :)
spas2001API-функция по-моему GetShortName (точнее не скажу, давно использовал) и все будет хорошо
Читаем мое первое сообщение в данном топике.
...
Рейтинг: 0 / 0
Импорт из dbf
    #34822195
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky alexis glinskiтолько что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
Можно пример, как путь указываете в ConnectString транзакции?
как и у Локшин Марк , путь прописываю в registry, а в transaction object только odbc источник ...
...
Рейтинг: 0 / 0
Импорт из dbf
    #34822476
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
alexis glinski Anatoly Moskovsky alexis glinskiтолько что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
Можно пример, как путь указываете в ConnectString транзакции?
как и у Локшин Марк , путь прописываю в registry, а в transaction object только odbc источник ...
Путь в реестре подхватывается в момент Connect Using ... ?
...
Рейтинг: 0 / 0
Импорт из dbf
    #34822657
Фотография ЗоринАндрей
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky alexis glinskiтолько что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
Можно пример, как путь указываете в ConnectString транзакции?
вроде так:
"...;DBQ=C:\Folder\File.ext;..."
...
Рейтинг: 0 / 0
Импорт из dbf
    #34823346
Фотография spas2001
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Этот топик про прямую загрузку dbf, если я не ошибаюсь и насколько я помню там как раз и приходилось что-то подправлять, подробностей не помню
--------------------------------------------------
Главная деталь любой машины - голова ее владельца
...
Рейтинг: 0 / 0
Импорт из dbf
    #34826100
alexis glinski
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Anatoly Moskovsky alexis glinski Anatoly Moskovsky alexis glinskiтолько что проверил Microsoft dBase Driver (*.dbf) , путь к файлу с пробелами и кирилицей, работает ...
Можно пример, как путь указываете в ConnectString транзакции?
как и у Локшин Марк , путь прописываю в registry, а в transaction object только odbc источник ...
Путь в реестре подхватывается в момент Connect Using ... ?
да, соответственно чтобы выбрать другой файл надо сделать disconnect/изменить registry/connect.
...
Рейтинг: 0 / 0
Импорт из dbf
    #34830140
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Всем здрасьте!
Есть же простой UO которому НЕ НАДО никаких ODBC и он "понимает" длинные имена

Пример использования:

ds_dbf lds_dbf
lds_eddbf = create ds_dbf
lds_dbf.of_ReadFile(ls_long_file_name_dbf)
lds_dbf.of_ImportFile(ls_long_file_name_dbf)

Первая функция анализирует содержимое файла и создает DataStore
Вторая импортирует данные ... но для начала делает '.' разделителем
целой и дробной части :-)
...
Рейтинг: 0 / 0
Импорт из dbf
    #34830263
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_Всем здрасьте!
Есть же простой UO которому НЕ НАДО никаких ODBC и он "понимает" длинные имена
ds_dbf lds_dbf

Если Вы внимательно прочитаете начало этого топика, то увидите, что именно этот объект был использован в первую очередь, но он не работал с тем форматом DBF который используется у автора топика. См. сообщение от 21 сен 07, 17:26
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831211
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky _Drive_Всем здрасьте!
Есть же простой UO которому НЕ НАДО никаких ODBC и он "понимает" длинные имена
ds_dbf lds_dbf

Если Вы внимательно прочитаете начало этого топика, то увидите, что именно этот объект был использован в первую очередь, но он не работал с тем форматом DBF который используется у автора топика. См. сообщение от 21 сен 07, 17:26
В указанном Вами сообщении шла речь о НЕвозможности использовать ДЛИННЫЕ имена
в имени файла ... в приведеном мною примере все ЭТО работает ... только что проверил и загрузил файл "C:\Documents and Settings\Danila.PHARMDOMAIN\Desktop\el090407100000_070409103512.dbf"
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831242
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Drive_ Anatoly Moskovsky _Drive_Всем здрасьте!
Есть же простой UO которому НЕ НАДО никаких ODBC и он "понимает" длинные имена
ds_dbf lds_dbf

Если Вы внимательно прочитаете начало этого топика, то увидите, что именно этот объект был использован в первую очередь, но он не работал с тем форматом DBF который используется у автора топика. См. сообщение от 21 сен 07, 17:26
В указанном Вами сообщении шла речь о НЕвозможности использовать ДЛИННЫЕ имена
в имени файла ... в приведеном мною примере все ЭТО работает ... только что проверил и загрузил файл "C:\Documents and Settings\Danila.PHARMDOMAIN\Desktop\el090407100000_070409103512.dbf"
Я слегка доработал тот объект
1.Перед загрузкой делается измененение locales "то что там было" на "." - иначе не загружает НЕцелые числа (можно вставить в constructor & destructor)
2.После загрузки если CodePage (это 30-ый байт) у файла был <> 201 (т.е. не Windows1251)
пробегает по всем строкам и "char" колонкам и делает им OemToCharA
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831311
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_>См. сообщение от 21 сен 07, 17:26
В указанном Вами сообщении шла речь о НЕвозможности использовать ДЛИННЫЕ имена
в имени файла ...
Вот текст сообщения от 21 сен 07, 17:26
gnatochkac примером http://pbl.narod.ru/pblsrv.htm так ничего и не получилось, мой файл он считывать не хочет.
но через ODBC все замечательно работает :)
спасибо!
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831604
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
Anatoly Moskovsky _Drive_>См. сообщение от 21 сен 07, 17:26
В указанном Вами сообщении шла речь о НЕвозможности использовать ДЛИННЫЕ имена
в имени файла ...
Вот текст сообщения от 21 сен 07, 17:26
gnatochkac примером http://pbl.narod.ru/pblsrv.htm так ничего и не получилось, мой файл он считывать не хочет.
но через ODBC все замечательно работает :)
спасибо!

только что проверил ... и загрузил файл
C:\Documents and Settings\Danila.PHARMDOMAIN\Desktop\Рабочий стол\el090407100000_070409103512.dbf
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831623
_Drive_
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Гость
_Drive_ Anatoly Moskovsky _Drive_>См. сообщение от 21 сен 07, 17:26
В указанном Вами сообщении шла речь о НЕвозможности использовать ДЛИННЫЕ имена
в имени файла ...
Вот текст сообщения от 21 сен 07, 17:26
gnatochkac примером http://pbl.narod.ru/pblsrv.htm так ничего и не получилось, мой файл он считывать не хочет.
но через ODBC все замечательно работает :)
спасибо!

только что проверил ... и загрузил файл
C:\Documents and Settings\Danila.PHARMDOMAIN\Desktop\Рабочий стол\el090407100000_070409103512.dbf
и так тоже работает
C:\Documents and Settings\Danila.PHARMDOMAIN\Desktop\Рабочий стол\имя файла по русски.dbf
Если есть пример ТАКОГО файла который НЕ загружается вышлите на мыло :-)
...
Рейтинг: 0 / 0
Импорт из dbf
    #34831847
Фотография Anatoly Moskovsky
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
_Drive_Если есть пример ТАКОГО файла который НЕ загружается вышлите на мыло :-)
Исходный вопрос задавал не я :)
...
Рейтинг: 0 / 0
36 сообщений из 36, показаны все 2 страниц
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Импорт из dbf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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