还没收到,SINA速度也太慢了吧,还是我设置有错,现在只是比邮票发信快些。晚饭后在和你联系。我想保留此帖好和你联系,9:00准时给分。

解决方案 »

  1.   

    告诉你一个秘密:我虽然做软件工作18年了,但以前不在windows上。对于VB,我也是上个月才开始试着写点代码的。不过,关于windows的书,我看了不下30本。实践经验很少,只有一些理论知识。我只有靠我的经验来弥补我对windows和vb的生疏。你千万不要把我看成VB高手。我会汗颜的。
      

  2.   

    真的吗,可我看了你给别人的VB代码,根本不象是刚学一个月的,windows基础打扎实了,用什么只是一句话。真羡慕你的理论和实践,无拍之意。
      

  3.   

    大侠,我看你能不能给我把信帖这算了,我已收N次(N>20),还没有,真TMD,我该换邮箱了。
      

  4.   

    在Access的工具菜单有“数据库实用工具”,这里面有一个“升迁向导”可以把你的ACCESS数据库升迁到SQL SERVER中。
    将来在单位的其他机器上安装时,肯定要安装SQL SERVER或MSDE。
    如果你的程序链接数据库使用的是连接字串,那么你就要确保这个字串所指的服务器名一定要可变。因为服务器名就是机器名。如果你用(Local),那么总是访问本地机器。用名字和IP地址都可以指向(数据库)服务器,但如果用名字,就要配置"命名管道"协议。
    如果你用DSN方式连接服务器,你就要把这个DSN在安装的机器上也制作好。
    对于VB来说,因为你用了ADO,连接ACCESS和链接SQL SERVER基本是一样的(除了连接字串不同)。SQL语句有些不一样。这个就要看书了。
      

  5.   

    先告诉你网址www.21cn.com
    随后给你解决你刚刚说的问题
      

  6.   

    我先用绑定,以后改成代码,我先熟悉一下。
    With Adodc1
         .ConnectionString = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=zwkgdata;Data Source=wjpserver" '"Provider=Microsoft.Jet.OLEDB.4.0;Data Source=D:\总务科库管系统\mdb\xhpk\zwkgmdb.mdb;Persist Security Info=False"
         .ConnectionTimeout = 30
         .CommandType = adCmdText
         .RecordSource = rstsql
         .Refresh
    End With
      

  7.   

    你可以不在select语句中合并。先用ado读出这些字段,然后用vb合并。用sql合并比较复杂难写。用vb你可以这样:
    假设你的recordset是rs,你的编码需要三位数字:
    select case Len(CStr(rs.Fields("总编号")))
    case 1
       strGNum = "00" &  CStr(rs.Fields("总编号"))
    case 2
       strGnum = "0" & CStr(rs.Fields("总编号"))
    end select
    对你的所有编号如此处理
      

  8.   

    大侠,上面的绑定代码对不。在对方机上只要安装SQL2000,就行了吧,我不想用DSN。不需要在配置了吧。另外用VB怎样启动SQL2000。我想SQL2000要用密码的,别人的机子我不能用winnt的安全配置。我想在SQL2000中加入我的管理帐号,当用户打开程序时,能自动将SQL2000启动。
      

  9.   

    如果一定要用sql,你可是是看这个(我没测试):SELECT (GNum =
            CASE a.总分类编号 
            WHEN a.总分类编号 < 10 THEN '00' + CONVERT(CHAR(3),a.总分类编号) 
            WHEN a.总分类编号 >= 10 AND a.总分类编号 < 99 THEN '0' + CONVERT(CHAR(3),a.总分类编号) 
            END) &
           (DNum =
            CASE a.细分类编号 
            WHEN a.细分类编号 < 10 THEN '00' + CONVERT(CHAR(3),a.细分类编号) 
            WHEN a.细分类编号 >= 10 AND a.细分类编号 < 99 THEN '0' + CONVERT(CHAR(3),a.细分类编号) 
            END) &
           (PNum =
            CASE a.物品编号 
            WHEN a.物品编号 < 10 THEN '00' + CONVERT(CHAR(3),a.物品编号) 
            WHEN a.物品编号 >= 10 AND a.物品编号 < 99 THEN '0' + CONVERT(CHAR(3),a.物品编号) 
            END) as  产品编号, b.总分类名称, c.细分类名称, a.物品名称
    FROM 物品目录表 as a 
         INNER JOIN 细分类表 as c ON a.细分类编号 = c.细分类编号 
         INNER JOIN 总分类表 as b ON a.总分类编号 = b.总分类编号 我这只是按照语法写的,没测试,你测试一下。
      

  10.   

    D:\总务科库管系统\mdb\xhpk\zwkgmdb.mdb
    你要保证数据库文件放在这个目录下才可以。
    你这是access的连接字串,不是sql2000的。
    用连接字串不需要DSN
    用VB启动sql服务器,要用到API。这个论坛有人问过这个问题。我现在一时找不到如何用API启动sql服务器的代码。但一定可以的。等找到了告诉你
      

  11.   

    大侠,我写错了,我已经将ACCESS数据库导入到SQL2000了,在连接时习惯性的又连到MDB文件上了。
      

  12.   

    这是一个用API打开服务器的例子,我没用过,你看看Private Const RESOURCETYPE_ANY = &H0
    Private Const RESOURCE_CONNECTED = &H1
    Private Type NETRESOURCE
        dwScope As Long
        dwType As Long
        dwDisplayType As Long
        dwUsage As Long
        lpLocalName As Long
        lpRemoteName As Long
        lpComment As Long
        lpProvider As Long
    End Type
    Private Declare Function WNetOpenEnum Lib "mpr.dll" Alias "WNetOpenEnumA" (ByVal dwScope As Long, ByVal dwType As Long, ByVal dwUsage As Long, lpNetResource As Any, lphEnum As Long) As Long
    Private Declare Function WNetEnumResource Lib "mpr.dll" Alias "WNetEnumResourceA" (ByVal hEnum As Long, lpcCount As Long, lpBuffer As Any, lpBufferSize As Long) As Long
    Private Declare Function WNetCloseEnum Lib "mpr.dll" (ByVal hEnum As Long) As Long
    Private Declare Function lstrlen Lib "kernel32" Alias "lstrlenA" (ByVal lpString As Any) As Long
    Private Declare Function lstrcpy Lib "kernel32" Alias "lstrcpyA" (ByVal lpString1 As Any, ByVal lpString2 As Any) As Long
    Function LetterToUNC(DriveLetter As String) As String
        Dim hEnum As Long
        Dim NetInfo(1023) As NETRESOURCE
        Dim entries As Long
        Dim nStatus As Long
        Dim LocalName As String
        Dim UNCName As String
        Dim i As Long
        Dim r As Long    ' Begin the enumeration
        nStatus = WNetOpenEnum(RESOURCE_CONNECTED, RESOURCETYPE_ANY, 0&, ByVal 0&, hEnum)    LetterToUNC = DriveLetter    'Check for success from open enum
        If ((nStatus = 0) And (hEnum <> 0)) Then
            ' Set number of entries
            entries = 1024        ' Enumerate the resource
            nStatus = WNetEnumResource(hEnum, entries, NetInfo(0), CLng(Len(NetInfo(0))) * 1024)        ' Check for success
            If nStatus = 0 Then
                For i = 0 To entries - 1
                    ' Get the local name
                    LocalName = ""
                    If NetInfo(i).lpLocalName <> 0 Then
                        LocalName = Space(lstrlen(NetInfo(i).lpLocalName) + 1)
                        r = lstrcpy(LocalName, NetInfo(i).lpLocalName)
                    End If                ' Strip null character from end
                    If Len(LocalName) <> 0 Then
                        LocalName = Left(LocalName, (Len(LocalName) - 1))
                    End If                If UCase$(LocalName) = UCase$(DriveLetter) Then
                        ' Get the remote name
                        UNCName = ""
                        If NetInfo(i).lpRemoteName <> 0 Then
                            UNCName = Space(lstrlen(NetInfo(i).lpRemoteName) + 1)
                            r = lstrcpy(UNCName, NetInfo(i).lpRemoteName)
                        End If                    ' Strip null character from end
                        If Len(UNCName) <> 0 Then
                            UNCName = Left(UNCName, (Len(UNCName) - 1))
                        End If                    ' Return the UNC path to drive
                        'added the [] to seperate on printout only
                        LetterToUNC = UNCName                    ' Exit the loop
                        Exit For
                    End If
                Next i
            End If
        End If    ' End enumeration
        nStatus = WNetCloseEnum(hEnum)
    End Function
    Private Sub Form_Load()
        MsgBox "C: UNC path: " + LetterToUNC("C:")
    End Sub
      

  13.   

    好像要用到StartService,OpenService等api函数