程序简介:
  我有一个excel表,字段为:姓名,身份证号,专业,级别,证书号
想通过vb实现,导入sql,表已经存在,字段有:id,comname,username,user_identity,user_speciality,user_grade,certificate_id,drsj,其中id为自加,drsj默认为当前时间,comname是通过commondialog.filename获得的
我写的程序如下:
Public a, b As StringPrivate Sub Command1_Click()
  Dim conn As ADODB.Connection
  Dim rs As ADODB.Recordset
  Dim strSQL As String
  Set conn = New ADODB.Connection
  Set rs = New ADODB.Recordset
  conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=lw;password=12345;Initial Catalog=yljg;Data Source=SQL1"
  conn.Open
  strSQL = "insert into labor (comname,username,user_identity,user_speciality,user_grade,certificate_id) values('" & b & "',select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE='" & Label3.Caption & "',sheet1$)"
  rs.Open strSQL, conn, 3, 3
End SubPrivate Sub Command2_Click()
  CommonDialog1.DialogTitle = "打开数据源"
  CommonDialog1.Filter = "Excel Files(*.xls)|*.xls"
  CommonDialog1.ShowOpen
  Label3.Caption = CommonDialog1.FileName
  a = Label3.Caption
End SubPrivate Sub Form_Load()
  Label2.Caption = newcomfrm.result
  b = Label2.Caption
End Sub
问题一:
strSQL = "insert into labor (comname,username,user_identity,user_speciality,user_grade,certificate_id) values('" & b & "',select * from OPENROWSET('MICROSOFT.JET.OLEDB.4.0','Excel 5.0;HDR=YES;DATABASE='" & Label3.Caption & "',sheet1$)"
上面这句,语法错在哪了?问题二:
如何实现往excel添加一列数据,不改变其他列?

解决方案 »

  1.   

    就是用VB取EXCEL的数据,然后导入到数据库啊!~~
    工程->引用->Microsoft Excel 9.0 Object Library (后面为版本号)
    具体的对EXCEL的操作,你可以到EXCEL中录制宏看看吧~~~~~~`
      

  2.   

    insert into 语句要有跟字段对应的具体的值
      

  3.   

    把exlel当作数据库来读
    定义函数如下:
    Public Function Read_Excel(ByVal sFile As String) As ADODB.Recordset      On Error GoTo fix_err
          Dim rs As ADODB.Recordset
          Set rs = New ADODB.Recordset
          Dim sconn As String      rs.CursorLocation = adUseClient
          rs.CursorType = adOpenKeyset
          rs.LockType = adLockBatchOptimistic      sconn = "DRIVER=Microsoft Excel Driver (*.xls);" & "DBQ=" & sFile
          rs.Open "SELECT * FROM [sheet1$]", sconn
          Set Read_Excel = rs
          Set rs = Nothing
          Exit Function
    fix_err:
          Debug.Print Err.Description + " " + _
                      Err.Source, vbCritical, "Import"
          Err.Clear
    End Function只要调用此含数即可:
    Private Sub Command5_Click()
     
     Set rsyl = Read_Excel("d:\a.xls")
      Set TDBGrid2.DataSource = rsyl
    End Sub
      

  4.   

    re:static504(萨达姆) 
    能不能把你说的东东说具体点,或者弄一个来看看啊
      

  5.   

    多谢各位指点,但是你们还是没解决我的问题呀!急!!!
    程序简介:有几百家的企业,每家企业的员工资料在excel里面,我要通过vb写一个程序,让excel的数据可以导入到sql
      

  6.   

    直接对excel操作就可以了,给你一个例子,自己看,或者把程序给我帮你改一下下先引用microsoft excel9.0Dim exl As New Excel.Application
    Dim Book As New Excel.Workbook
    Dim Sheet As New Excel.Worksheet
    Dim s As String
    Set Book = exl.Workbooks.Open(App.Path & "文件名称")
    Set Sheet = Book.Sheets(1)
    With Sheet
        '利用循环读出excel中的数据,然后利用rs的addnew增加进表
        For r = 1 To .Rows
           For i = 1 To .Columns
               '这里可以利用rs addnew方法,然后把数据读入相应的字段
               s = .Cells(r, i)
           Next
        Next
    End With
      

  7.   

    谁来帮帮我???!!!
    经过反复学习,修改程序如下,可是还是不能执行!Public m, n As StringPrivate Sub Command1_Click()
      Dim conn As ADODB.Connection
      Dim rs As ADODB.Recordset
      Dim strSQL As String
      Set conn = New ADODB.Connection
      Set rs = New ADODB.Recordset
      conn.ConnectionString = "Provider=SQLOLEDB.1;Persist Security Info=False;User ID=lw;password=12345;Initial Catalog=yljg;Data Source=SQL1"
      conn.Open
      Dim exl As New Excel.Application
      Dim Book As New Excel.Workbook
      Dim Sheet As New Excel.Worksheet
      Dim a, b, c, d, e As String
      Set Book = exl.Workbooks.Open(m)
      Set Sheet = Book.Sheets(1)
      With Sheet
        '利用循环读出excel中的数据,然后利用rs的addnew增加进表
        For r = 1 To .Rows
           For i = 1 To 5
               '这里可以利用rs addnew方法,然后把数据读入相应的字段
               a = .Cells(r, 1)
               b = .Cells(r, 2)
               c = .Cells(r, 3)
               d = .Cells(r, 4)
               e = .Cells(r, 5)
               Sql = "Select * from labor"
               rs.Open Sql, conn, 3, 3
               rs.AddNew
               rs.Fields(1) = n
               rs.Fields(2) = a
               rs.Fields(3) = b
               rs.Fields(4) = c
               rs.Fields(5) = d
               rs.Fields(6) = e
               rs.Update         
               
           Next
        Next
    End With
    End SubPrivate Sub Command2_Click()
      CommonDialog1.DialogTitle = "打开数据源"
      CommonDialog1.Filter = "Excel Files(*.xls)|*.xls"
      CommonDialog1.ShowOpen
      Label3.Caption = CommonDialog1.FileName
      m = Label3.Caption
    End SubPrivate Sub Form_Load()
      Label2.Caption = newcomfrm.result
      n = Label2.Caption
    End Sub
      

  8.   

    建议你在SQL SERVER中先导入生成VB语句,参考它是怎么做的!另外它也有现成的DTS导入例子,不难,看看
      

  9.   

    找到解决方案了:Dim exldb As New ADODB.Connection
    Dim exlrs As New ADODB.Recordset
    Dim I As Integer, J As Integer
        '用ADO打开Excel的连接串
        exldb.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};" & _
                       "DriverId=790;Dbq=" & m & ";"
        exldb.Open
        exlrs.Open "select * from [Sheet1$]", exldb, adOpenStatic, adLockOptimistic
        exlrs.MoveFirst For I = 1 To exlrs.RecordCount
        rs.AddNew
        
        rs.Fields(1).Value = Label2.Caption
        rs.Fields(7).Value = Now()
        For J = 2 To 6
            rs.Fields(J).Value = exlrs.Fields(J - 1)
        Next
        rs.Update
        exlrs.MoveNext
    Next