powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Импорт из dbf
25 сообщений из 36, страница 1 из 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
25 сообщений из 36, страница 1 из 2
Форумы / PowerBuilder [игнор отключен] [закрыт для гостей] / Импорт из dbf
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


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