Excel精英培训网

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

[已解决]●●●●●●●关于从ACCESS里获取值●●●●●●●

[复制链接]
发表于 2014-4-16 11:56 | 显示全部楼层 |阅读模式
请问各位前辈
我用VBA从EXCEL到ACCESS里读值,我有一个值的格式格式为:compo+id六位数+YYMMDDHHMMSS
(例如compocisoqo140101083001)
我想只取得里面那个ID值cisoqo,然后写在到EXCEL里,这样子我下面的代码该如何改啊?
我这个值就是下面代码中的SerialNum。



Private Sub CommandButton1_Click()
Dim Serious$, Rst As New ADODB.Recordset, Strsql$, Ctl As Control, i%

On Error GoTo ErrLine
’链接数据库
If Condb("TargetDatabase.mdb", "ALEX") = False Then GoTo Line1
’从ACCESS选取数据
Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumPay,SettleCompleDT,SerialNum from [Table] order by SerialNum"

Set Rst = Cnn.Execute(Strsql)
If Rst.EOF And Rst.BOF Then MsgBox "Cannot find data in the database": GoTo Line1

With Sheet4
    .Cells.Delete
‘讲数据逐个打印在EXCEL中   
    For i = 0 To Rst.Fields.Count - 1
        .Cells(1, i + 1) = Rst.Fields(i).Name
    Next i
    .Range("a2").CopyFromRecordset Rst
   
    .Columns.AutoFit
    .Activate
End With

Line1: Set Rst = Nothing: Exit Sub
ErrLine: MsgBox "system error", 1 + 16, "Alert": GoTo Line1
End Sub



Public Function Condb(dbName$, Optional pwd$ = "") As Boolean
On Error GoTo Line1
    Condb = True
    Set Cnn = New ADODB.Connection

Cnn.ConnectionString = "Provider=Microsoft.jet.OLEDB.4.0;" & _
                           "Data Source=" & ThisWorkbook.Path & "\" & dbName & _
                           ";Jet OLEDB:Database Password=" & pwd & ";"

    Cnn.CursorLocation = adUseClient
    Cnn.ConnectionTimeout = 5
    Cnn.Open
Exit Function
Line1:
Condb = False
MsgBox "database connection error£º" & Chr(10) & Err.Description
End Function





最佳答案
2014-4-16 13:37
zixiaoruixue 发表于 2014-4-16 13:25
请问前辈是这样子吗?

Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumP ...

Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumPay,SettleCompleDT,mid(SerialNum,6,6) as 编号 from [Table] order by SerialNum"
列名你在后面再加上 as 新列名 就可以了。


excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
发表于 2014-4-16 12:19 | 显示全部楼层
在查询语句中对要取值的字段用mid函数,
mid(字段名,6,6)

评分

参与人数 1 +1 收起 理由
zixiaoruixue + 1 很给力!

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2014-4-16 13:25 | 显示全部楼层
hwc2ycy 发表于 2014-4-16 12:19
在查询语句中对要取值的字段用mid函数,
mid(字段名,6,6)

请问前辈是这样子吗?

Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumPay,SettleCompleDT,mid(SerialNum,6,6) from [Table] order by SerialNum"


这样子会不会影响ACCESS中列名的打印啊?我刚才试了下,我ACCESS表中列名为SerialNum,但是打印到EXCEL成为Expr1009了
ACCESS:


打印到EXCEL时:







回复

使用道具 举报

发表于 2014-4-16 13:37 | 显示全部楼层    本楼为最佳答案   
zixiaoruixue 发表于 2014-4-16 13:25
请问前辈是这样子吗?

Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumP ...

Strsql = "select CUSTNM,ACCTNO,BALAMT,LSTPYM,Status,PTPAmt,FirstPayDT,NumPay,SettleCompleDT,mid(SerialNum,6,6) as 编号 from [Table] order by SerialNum"
列名你在后面再加上 as 新列名 就可以了。


评分

参与人数 1 +1 收起 理由
zixiaoruixue + 1 很给力!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-4-26 16:01 , Processed in 0.832813 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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