PowerBuilder DSN 创建

发布于 2024-08-07 00:18:28 字数 262 浏览 6 评论 0原文

我是 PowerBuilder 的新手。

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

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

如果可能的话,还提供完整的 PowerBuilder 代码来完成问题。

I am new to PowerBuilder.

I want to retrieve the data from MSAccess tables and update it to corresponding SQL tables. I am not able to create a permanent DSN for MSAccess because I have to select different MSAccess files with same table information. I can create a permanent DSN for SQL server.

Please help me to create DSN dynamically when selecting the MSAccess file and push all the tables data to SQL using PowerBuilder.

Also give the full PowerBuilder code to complete the problem if its possible.

如果你对这篇内容有疑问,欢迎到本站社区发帖提问 参与讨论,获取更多帮助,或者扫码二维码加入 Web 技术交流群。

扫码二维码加入Web技术交流群

发布评论

需要 登录 才能够评论, 你可以免费 注册 一个本站的账号。

评论(4

巴黎盛开的樱花 2024-08-14 00:18:28

在 Access 中,我们强烈建议根本不要使用 DSN,因为这样就少了一件需要配置的事情,也少了一件让用户搞砸的事情。 使用 DSN-Less 连接 您应该看看 PowerBuilder 是否有类似的选项。

In Access we strongly suggest not using DSNs at all as it is one less thing for someone to have to configure and one less thing for the users to screw up. Using DSN-Less Connections You should see if PowerBuilder has a similar option.

笨死的猪 2024-08-14 00:18:28
  • 在 ODBC 管理器中手动创建 DSN
  • 找到注册表中的条目
  • 将注册表语法导出到 .reg 文件
  • 在 PB 中动态读取和编辑 .reg 文件
  • 使用 PB 的 RegistrySet ( key, valuename, valuetype, value )

设置 DSN 后,可以使用多种选项将数据从一个数据库推送到另一个数据库。

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

  • Create the DSN manually in the ODBC administrator
  • Locate the entry in the registry
  • Export the registry syntax into a .reg file
  • Read and edit the .reg file dynamically in PB
  • Write it back to the registry using PB's RegistrySet ( key, valuename, valuetype, value )

Once you've got your DSN set up, there are many options to push data from one database to the other.

You'll need two transaction objects in PB, each pointing to its own database. Then, you could use a Data Pipeline object to manage the actual data transfer.

缱倦旧时光 2024-08-14 00:18:28

您想要执行 Tony 提到的 DSNLess 连接。我在 PBDJ 展示了一个执行此操作的示例,并在 Sybase 的 CodeXchange 上提供了一个代码示例。

You want to do the DSNLess connection referenced by Tony. I show an example of doing it at PBDJ and have a code sample over at Sybase's CodeXchange.

迷爱 2024-08-14 00:18:28

我正在使用这个代码,试试吧!

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

I am using this code, try it!

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

or

//// 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
~没有更多了~
我们使用 Cookies 和其他技术来定制您的体验包括您的登录状态等。通过阅读我们的 隐私政策 了解更多相关信息。 单击 接受 或继续使用网站,即表示您同意使用 Cookies 和您的相关数据。
原文