我现在做了小程序,用VB6.0和SQL2000且都装在一台机子上,其中程序里用了许多ADODC控件与数据库连接,
连接的时候机器名指定的是我的机器名。现在我想把程序放在另一台机子上用,程序里的每一个ADODC控件的机器名都得改变,象这种情况怎么处理?

解决方案 »

  1.   

    很明顯,adodc找不到數據庫的你程序原來連接數據庫是靜態的,也說是因定連接的,這樣當然你把程序放到另外一臺機子上它就找不到對應的路徑。你要把連接數據庫設置成動態連接數據庫,也就是應用程序放在哪裡?數據庫也放在那裡。用AppPath
      

  2.   

    用access,foxpro等,可以用自动寻找路径,但sql server  怎么将数据库放到当前工程的目录,请教…………
      

  3.   

    你当初建立一个模版就好了,把与数据库连接写一个函数,放在模版里,公用,用的时候调用一下,需要修改的话只要改一个地方就行了。
    或者把数据库地址的字符串设置为一个公共变量,在整个程序里面都可以调用,修改的话只需要修改一个地方。
    还有local
    或者王注册表里面写一个值,判断是否第一次在该计算机安装次软件,如果是的话,就配置一下数据环境,赋给字符串,再写入注册表,用的时候从注册表读取
      

  4.   

    我数据库连接的时候是用了一个连接函数,且也是在公共模块里,但是我在程序用到连接数据原的时候又用的ADODC控件连的,是不是这样走弯路了。
      

  5.   

    ADO最好用代码实现,采用控件的方式我个人认为是不方便。既然你有一个建立连接的函数,那你就定义一个ADO对象,不要去用控件了。
      

  6.   

    使用ADO对象多好啊你那个,只能一个个改了,还有个办法,按照数据库的路径在别人的机器上也那么设置一个路径,如果你没有加机器名的话。否则就只能设置成ip了。
      

  7.   

    应用动态ADO绑定方法就行了,就是应用代码来实现连接数据库和编辑数据库,这样就没问题了!!希望你能办到。
      

  8.   

    用对象吧,控件灵活性太差
    Public cnn_xt As New ADODB.Connection
    Dim rst_jjsi As New ADODB.Recordset
    Dim rst_xtjj_b As New ADODB.Recordset 
    Dim rst_jjde_b As New ADODB.Recordset 
    Dim Node_jjsi As Node
    Dim sql As String  '主要用于SQL
    Private Sub DtG_fz(DtG_z As Integer) '设置DataGrid布局
      Select Case DtG_z
          Case 1
            With DataGrid1
             For i = 0 To rst_xtjj_b.Fields.Count - 1
             .Columns(i).Visible = False
             Next
             .Columns(1).Visible = True
             .Columns(1).Caption = "定额编号"
             .Columns(1).Width = 1000
             .Columns(2).Visible = True
             .Columns(2).Caption = "定额名称"
             .Columns(2).Width = 3500
             .Columns(3).Visible = True
             .Columns(3).Caption = "单位"
             .Columns(3).Width = 550
             .Columns(4).Visible = True
             .Columns(4).Caption = "单位数量"
             .Columns(4).Width = 900
             .Columns(5).Visible = True
             .Columns(5).Caption = "基价"
             .Columns(5).Width = 900
            End With
          Case 2
            With DataGrid2
              For i = 0 To rst_jjde_b.Fields.Count - 1
               .Columns(i).Visible = False
              Next
              .Columns(0).Visible = True
              .Columns(0).Caption = "代号"
              .Columns(0).Width = 700
              .Columns(2).Visible = True
              .Columns(2).Caption = "工料机名称"
              .Columns(2).Width = 2000
              .Columns(2).Locked = True
              .Columns(3).Visible = True
              .Columns(3).Caption = "单位"
              .Columns(3).Width = 900
              .Columns(3).Locked = True
              .Columns(4).Visible = True
              .Columns(4).Caption = "基价"
              .Columns(4).Width = 900
              .Columns(4).Locked = True
              .Columns(5).Visible = True
              .Columns(5).Caption = "含量"
              .Columns(5).Width = 900
            End With
          Case Else
            
        End Select
      
    End Sub
    Private Sub Form_Load()
      'CenterForm Me '窗体运行中央的过程
    cnn_xt.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & _ App.Path & "\glxt_k.mdb;Persist Security Info=False"
      cnn_xt.Open
      rst_jjsi.CursorLocation = adUseClient
      rst_jjsi.Open "SELECT * FROM jj_si ORDER BY si", cnn_xt, adOpenKeyset, adLockOptimistic, adCmdText
      Dim x As String
      rst_jjsi.MoveFirst
      Do While Not rst_jjsi.EOF
         If Not rst_jjsi!si_f = "" Then
            x = rst_jjsi!si_f
            Set Node_jjsi = TreeView1.Nodes.Add(x, tvwChild, rst_jjsi!si, rst_jjsi!mc)
         Else
            Set Node_jjsi = TreeView1.Nodes.Add(, tvwFirst, rst_jjsi!si, rst_jjsi!mc)
         End If
         rst_jjsi.MoveNext
      Loop
      rst_jjsi.MoveFirst
     
      rst_xtjj_b.CursorLocation = adUseClient
      sql = "SELECT * FROM xt_jj where " & "si like '" & RTrim(rst_jjsi!si) & "%'"
      rst_xtjj_b.Open sql, cnn_xt, adOpenKeyset, adLockBatchOptimistic, adCmdText
      rst_xtjj_b.MoveFirst
      rst_jjde_b.CursorLocation = adUseClient
      sql = "SELECT * FROM xt_de where " & "de_bh =  '" & RTrim(rst_xtjj_b!de_bh) & "'"
      rst_jjde_b.Open sql, cnn_xt, adOpenKeyset, adLockBatchOptimistic, adCmdText
      Set DataGrid1.DataSource = rst_xtjj_b
      DtG_fz 1    
      Set DataGrid2.DataSource = rst_jjde_b
      DtG_fz 2
     
    End SubPrivate Sub Form_Unload(Cancel As Integer)
     rst_xtjj_b.UpdateBatch
     rst_jjde_b.UpdateBatch
     rst_xtjj_b.Close
     rst_jjde_b.Close
     Set rst_xtjj_b = Nothing
     Set rst_jjde_b = Nothing
     rst_jjsi.Close
     Set rst_jjsi = Nothing
    End Sub