PowerBuilder DSN Создание - PullRequest
       17

PowerBuilder DSN Создание

1 голос
/ 08 октября 2009

Я новичок в PowerBuilder.

Я хочу получить данные из таблиц MSAccess и обновить их до соответствующих таблиц SQL. Я не могу создать постоянный DSN для MSAccess, потому что мне приходится выбирать разные файлы MSAccess с одинаковыми данными таблицы. Я могу создать постоянный DSN для сервера SQL.

Помогите мне динамически создать DSN при выборе файла MSAccess и перенести все данные таблиц в SQL с помощью PowerBuilder.

Также предоставьте полный код PowerBuilder для решения проблемы, если это возможно.

Ответы [ 4 ]

4 голосов
/ 10 октября 2009

В Access мы настоятельно рекомендуем вообще не использовать DSN, поскольку кому-то приходится настраивать меньше, а пользователям - меньше. Использование подключений без DSN Вы должны увидеть, есть ли у PowerBuilder аналогичная опция.

1 голос
/ 11 декабря 2009

Вы хотите установить соединение DSNLess, на которое ссылается Тони. Я показываю пример этого на PBDJ и пример кода в Sybase CodeXchange.

1 голос
/ 08 октября 2009
  • Создать DSN вручную в администраторе ODBC
  • Найдите запись в реестре
  • Экспорт синтаксиса реестра в файл .reg
  • Чтение и редактирование файла .reg динамически в PB
  • Запишите его обратно в реестр, используя PB RegistrySet ( key, valuename, valuetype, value )

После того, как вы настроили DSN, у вас есть много возможностей для передачи данных из одной базы данных в другую.

Вам понадобятся два transaction объекта в PB, каждый из которых указывает на свою собственную базу данных. Затем вы можете использовать объект Data Pipeline для управления фактической передачей данных.

0 голосов
/ 15 мая 2013

Я использую этот код, попробуйте!

//// Profile access databases accdb format
SQLCA.DBMS = "OLE DB"
SQLCA.AutoCommit = False
SQLCA.DBParm = "PROVIDER='Microsoft.ACE.OLEDB.12.0',DATASOURCE='C:\databasename.accdb',DelimitIdentifier='No',CommitOnDisconnect='No'"

Connect using SQLCA;
If SQLCA.SQLCode = 0 Then
    Open ( w_rsre_frame )   
else
    MessageBox ("Cannot Connect to Database", SQLCA.SQLErrText )
End If

или

//// Profile access databases mdb format
transaction aTrx
long resu
string database 
database = "C:\databasename.mdb" 
aTrx  = create transaction 
aTrx.DBMS = "OLE DB" 
aTrx.AutoCommit = True 
aTrx.DBParm = "PROVIDER='Microsoft.Jet.OLEDB.4.0',DATASOURCE='"+database+"',PBMaxBlobSize=100000,StaticBind='No',PBNoCatalog='YES'"
connect using aTrx ;
if atrx.sqldbcode = 0 then
    messagebox("","Connection success to database")
else 
    messagebox("Error code: "+string(atrx.sqlcode),atrx.sqlerrtext+ " DB Code Error: "+string(atrx.sqldbcode))
end if
// do stuff...
destroy atrx
...