我是PowerBuilder的新手。
我想从MSAccess表中检索数据并将其更新为相应的SQL表。我无法为MSAccess创建永久DSN,因为我必须选择具有相同表信息的不同MSAccess文件。我可以为SQL服务器创建一个永久DSN。
请帮助我在选择MSAccess文件时动态创建DSN,并使用PowerBuilder将所有表数据推送到SQL。
如果可能的话,还要提供完整的PowerBuilder代码来解决问题。
答案 0 :(得分:4)
在Access中,我们强烈建议不要使用DSN,因为对于某人来说,配置必须少一些,而对于用户来说,减少一件事情就少了。 Using DSN-Less Connections你应该看看PowerBuilder是否有类似的选择。
答案 1 :(得分:1)
RegistrySet ( key, valuename, valuetype, value )
一旦设置了DSN,就有很多选项可以将数据从一个数据库推送到另一个数据库。
PB中需要两个transaction
个对象,每个对象都指向自己的数据库。然后,您可以使用Data Pipeline
对象来管理实际的数据传输。
答案 2 :(得分:1)
您想要执行Tony引用的DSN Less连接。我展示了在PBDJ执行此操作的示例,并在Sybase CodeXchange上提供了代码示例。
答案 3 :(得分:0)
我正在使用此代码,试试吧!
//// 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