Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
查看: 1987|回复: 5

[已解决]求助:用SQL,对应查找.rar

[复制链接]
发表于 2013-4-13 17:04 | 显示全部楼层 |阅读模式
求助:用SQL,对应查找.rar (11.79 KB, 下载次数: 3)
发表于 2013-4-13 19:23 | 显示全部楼层
  1. select A.* ,B.销售精装,B.销售简装,B.销售普通,B.销售收藏 from [购进$]A,[销售$]B  WHERE a.日期=b.日期 AND  a.年级=b.年级 and A.书名=B.书名
复制代码
回复

使用道具 举报

发表于 2013-4-13 19:45 | 显示全部楼层
  1. Sub adosub()
  2.     Dim AdoConn As Object, AdoRst As Object
  3.     Dim StrConn$, strSQL$, DataSource$
  4.     Dim arr(), i As Long


  5.     DataSource = ThisWorkbook.FullName

  6.     Set AdoConn = CreateObject("ADODB.Connection")
  7.     Set AdoRst = CreateObject("ADODB.Recordset")
  8.     strSQL = "select A.*,B.销售精装,B.销售简装,B.销售普通,B.销售收藏 from [购进$] as A,[销售$] as B where a.日期=b.日期 and a.年级=b.年级 and a.书名=b.书名"

  9.     Select Case Application.Version
  10.         Case Is = "14.0":
  11.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  12.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  13.         Case Is = "12.0"
  14.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  15.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  16.         Case Else
  17.             StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  18.                       "Data Source=" & DataSource & "Extended Properties=""Excel 8.0;HDR=yes;imex=0"";"
  19.     End Select

  20.     On Error GoTo errcheck
  21.     AdoConn.Open StrConn

  22.     If AdoConn.State = 1 Then
  23.         Set AdoRst = AdoConn.Execute(strSQL)
  24.         Worksheets.Add
  25.         Range("a2").CopyFromRecordset AdoRst
  26.         ReDim arr(1 To AdoRst.Fields.Count)
  27.         For i = LBound(arr) To UBound(arr)
  28.             arr(i) = AdoRst.Fields(i - 1).Name
  29.         Next
  30.         Range("a1").Resize(, AdoRst.Fields.Count) = arr
  31.         AdoConn.Close
  32.         MsgBox "合并完成"
  33.     End If
  34.     Set AdoRst = Nothing
  35.     Set AdoConn = Nothing
  36.     Exit Sub
  37.    
  38. errcheck:
  39.     MsgBox Err.Number & vbNewLine & Err.Description
  40.     Exit Sub
  41. End Sub
复制代码
回复

使用道具 举报

发表于 2013-4-13 19:47 | 显示全部楼层
  1. Columns("A:A").NumberFormatLocal = "yyyy/m/d"
复制代码
在msgbox 前加这个,否则日期列全是数值显示。
回复

使用道具 举报

发表于 2013-4-13 19:52 | 显示全部楼层
  1. Sub adosub()
  2.     Dim AdoConn As Object, AdoRst As Object
  3.     Dim StrConn$, strSQL$, DataSource$
  4.     Dim arr(), i As Byte

  5.     DataSource = ThisWorkbook.FullName
  6.     Set AdoConn = CreateObject("ADODB.Connection")
  7.     Set AdoRst = CreateObject("ADODB.Recordset")

  8.     strSQL = "select A.*,B.销售精装,B.销售简装,B.销售普通,B.销售收藏 from [购进$] as A,[销售$] as B where a.日期=b.日期 and a.年级=b.年级 and a.书名=b.书名"

  9.     Select Case Application.Version
  10.         Case Is = "14.0":
  11.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  12.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  13.         Case Is = "12.0"
  14.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  15.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  16.         Case Else
  17.             StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  18.                       "Data Source=" & DataSource & "Extended Properties=""Excel 8.0;HDR=yes;imex=0"";"
  19.     End Select

  20.     On Error GoTo Errcheck

  21.     AdoConn.Open StrConn
  22.     Set AdoRst = AdoConn.Execute(strSQL)
  23.     Application.ScreenUpdating = False
  24.     Worksheets.Add

  25.     Range("a2").CopyFromRecordset AdoRst

  26.     With AdoRst.Fields
  27.         ReDim arr(1 To .Count)
  28.         For i = LBound(arr) To UBound(arr)
  29.             arr(i) = .Item(i - 1).Name
  30.         Next
  31.         Range("a1").Resize(, .Count) = arr
  32.     End With

  33.     Columns("A:A").NumberFormatLocal = "yyyy/m/d"
  34.     AdoConn.Close
  35.     Application.ScreenUpdating = True
  36.     MsgBox "合并完成"

  37.     Set AdoRst = Nothing
  38.     Set AdoConn = Nothing
  39.     Exit Sub

  40. Errcheck:
  41.     MsgBox Err.Number & vbNewLine & Err.Description
  42.     Exit Sub
  43. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
松儿 + 3

查看全部评分

回复

使用道具 举报

发表于 2013-4-13 19:54 | 显示全部楼层    本楼为最佳答案   
D:K列数字以2位小数显示。
列宽度自动调整。
  1. Sub adosub()
  2.     Dim AdoConn As Object, AdoRst As Object
  3.     Dim StrConn$, strSQL$, DataSource$
  4.     Dim arr(), i As Byte

  5.     DataSource = ThisWorkbook.FullName
  6.     Set AdoConn = CreateObject("ADODB.Connection")
  7.     Set AdoRst = CreateObject("ADODB.Recordset")

  8.     strSQL = "select A.*,B.销售精装,B.销售简装,B.销售普通,B.销售收藏 from [购进$] as A,[销售$] as B where a.日期=b.日期 and a.年级=b.年级 and a.书名=b.书名"

  9.     Select Case Application.Version
  10.         Case Is = "14.0":
  11.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  12.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  13.         Case Is = "12.0"
  14.             StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source=" & _
  15.                       DataSource & ";Extended Properties=""Excel 12.0;HDR=yes;imex=0"";"""
  16.         Case Else
  17.             StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
  18.                       "Data Source=" & DataSource & "Extended Properties=""Excel 8.0;HDR=yes;imex=0"";"
  19.     End Select

  20.     On Error GoTo Errcheck

  21.     AdoConn.Open StrConn
  22.     Set AdoRst = AdoConn.Execute(strSQL)
  23.     Application.ScreenUpdating = False
  24.     Worksheets.Add

  25.     Range("a2").CopyFromRecordset AdoRst

  26.     With AdoRst.Fields
  27.         ReDim arr(1 To .Count)
  28.         For i = LBound(arr) To UBound(arr)
  29.             arr(i) = .Item(i - 1).Name
  30.         Next
  31.         Range("a1").Resize(, .Count) = arr
  32.     End With

  33.     Columns("A:A").NumberFormatLocal = "yyyy/m/d"
  34.     Columns("d:k").NumberFormatLocal = "0.00"
  35.     AdoConn.Close
  36.     ActiveSheet.UsedRange.EntireColumn.AutoFit
  37.     Application.ScreenUpdating = True
  38.     MsgBox "合并完成"

  39.     Set AdoRst = Nothing
  40.     Set AdoConn = Nothing
  41.     Exit Sub

  42. Errcheck:
  43.     MsgBox Err.Number & vbNewLine & Err.Description
  44.     Exit Sub
  45. End Sub
复制代码

评分

参与人数 1 +3 收起 理由
松儿 + 3

查看全部评分

回复

使用道具 举报

您需要登录后才可以回帖 登录 | 注册

本版积分规则

小黑屋|手机版|Archiver|Excel精英培训 ( 豫ICP备11015029号 )

GMT+8, 2024-4-25 09:42 , Processed in 0.154081 second(s), 16 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

快速回复 返回顶部 返回列表