金蝶K/3自V12.2版本,对账套信息的记录方式进行了改动。以前是以Access数据库存储,现在则是采用类似KIS
专业版的方式存储在SQL数据库里。

为了保证K/3与KIS专业系列产品能够共存,因此分别采用三个不同的数据库,如下图:
数据库名 | 备注 |
| KDAcctDB | K/3账套登录数据库 |
| AcctCtl | KIS专业版账套登录数据库 |
| AcctCommerce | KIS商贸版账套登录数据库 |
这三个数据库结构基本一致,账套信息均存储在t_ad_kdAccount_gl,各主要字段解释如下:

因此,当我们做客户化开发需要直接连接账套时,就可以充分利用账套信息数据库。以下我将以VB.Net 2008和SQL Server 2005为例,说明如何连接金蝶K/3、KIS专业系列的账套。
Public Function GetAcctConn(ByVal strServer As String,ByVal strSAPwd As String,ByVal dbName As String) As String
Dim strConn As String="User ID=sa;Password={pwd};Data Source={Server};Initial Catalog={Database}"
GetAcctConn=Replace(Repalce(Replace(strConn,"{Server}",strServer),strConn,"{pwd}",strSAPwd),strConn,"{Database}",dbName)))
End Function
其中,strServer为数据库服务器名或者IP地址,strSAPwd为SQL数据库sa用户的密码,如果未设置可以输入空字符,dbName为账套信息数据库名,要连接KIS专业版,就输入AcctCtl;要连接K/3,就输入KDAcctDB。
下面分别以获取KIS专业版和K/3数据库连接字符串为例来进行说明。
假定数据库服务器名为KDServer,IP地址为192.168.1.6,SQL 2005的sa密码为123。
连接KIS专业版用如下代码:
Dim sqlConn As SQLClient.SQLConnection
Try
sqlConn=New System.Data.SQLClient.SQLConnection
sqlConn.ConnectionString=GetAcctConn("KDServer","123","AcctCtl")
sqlConn.Open()
Catch ex As Exception
Msgbox(ex.Message)
End Try
连接K/3用如下代码:
Dim sqlConn As SQLClient.SQLConnection
Try
sqlConn=New System.Data.SQLClient.SQLConnection
sqlConn.ConnectionString=GetAcctConn("KDServer","123","KDAcctDB")
sqlConn.Open()
Catch ex As Exception
Msgbox(ex.Message)
End Try