Sql server PowerBuilder DSN创建

Sql server PowerBuilder DSN创建,sql-server,ms-access,powerbuilder,Sql Server,Ms Access,Powerbuilder,我是PowerBuilder的新手 我想从MSAccess表中检索数据,并将其更新为相应的SQL表。我无法为MSAccess创建永久DSN,因为我必须使用相同的表信息选择不同的MSAccess文件。我可以为SQL server创建永久DSN 请帮助我在选择MSAccess文件时动态创建DSN,并使用PowerBuilder将所有表数据推送到SQL 如果可能,请提供完整的PowerBuilder代码以完成问题。 在ODBC管理员中手动创建DSN 在注册表中找到该项 将注册表语法导出到.reg文件中

我是PowerBuilder的新手

我想从MSAccess表中检索数据,并将其更新为相应的SQL表。我无法为MSAccess创建永久DSN,因为我必须使用相同的表信息选择不同的MSAccess文件。我可以为SQL server创建永久DSN

请帮助我在选择MSAccess文件时动态创建DSN,并使用PowerBuilder将所有表数据推送到SQL

如果可能,请提供完整的PowerBuilder代码以完成问题。

  • 在ODBC管理员中手动创建DSN
  • 在注册表中找到该项
  • 将注册表语法导出到.reg文件中
  • 在PB中动态读取和编辑.reg文件
  • 使用PB的
    RegistrySet(key、valuename、valuetype、value)将其写回注册表
一旦设置好DSN,就有许多选项可以将数据从一个数据库推送到另一个数据库

PB中需要两个
transaction
对象,每个对象都指向自己的数据库。然后,您可以使用
数据管道
对象来管理实际的数据传输。

  • 在ODBC管理员中手动创建DSN
  • 在注册表中找到该项
  • 将注册表语法导出到.reg文件中
  • 在PB中动态读取和编辑.reg文件
  • 使用PB的
    RegistrySet(key、valuename、valuetype、value)将其写回注册表
一旦设置好DSN,就有许多选项可以将数据从一个数据库推送到另一个数据库


PB中需要两个
transaction
对象,每个对象都指向自己的数据库。然后,您可以使用
数据管道
对象来管理实际的数据传输。

在Access中,我们强烈建议根本不要使用DSN,因为这样一来,用户就不用配置DSN,也不用担心用户会出问题。您应该看看PowerBuilder是否有类似的选项。

在Access中,我们强烈建议不要使用DSN,因为这样一来,用户就不用再配置DSN,也不用再麻烦用户了。您应该看看PowerBuilder是否有类似的选项。

您想进行Tony引用的无DSNLess连接。我展示了一个在上进行此操作的示例,并在Sybase的CodeXchange上提供了一个代码示例。

您想进行Tony引用的无DSNLess连接。我在上展示了一个这样做的示例,并在Sybase的CodeExchange上提供了一个代码示例。

我正在使用此代码,请尝试

//// 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

我正在使用此代码,请尝试

//// 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

我们之所以停止使用DSN,正是因为DSN不断出错,通常是因为那些发现ODBC管理工具的用户“搞砸了”。我们已经使用动态构建的连接字符串实现了普通ODBC连接。请参阅www.connectionstrings.com或相关帮助。我们之所以停止使用DSN,正是因为DSN不断出错,通常是因为发现ODBC管理工具的用户“搞砸了”。我们已经使用动态构建的连接字符串实现了普通ODBC连接。请访问www.connectionstrings.com或获取相关帮助。