Excel精英培训网

 找回密码
 注册
数据透视表40+个常用小技巧,让你一次学会!
楼主: qinhuan66

[已解决]求助各位老师:为什么写入黄色区域数据到ACCESS出现下面信息。谢谢

[复制链接]
发表于 2013-5-20 18:01 | 显示全部楼层
qinhuan66 发表于 2013-5-20 10:10
老师在线吗?这样的话今天测试发现了一个问题,如果重复输入不再提示,可以重复录入。

AdoConn.Execut ...

你把代码和附件再上传下,我这的全删了。

excel精英培训的微信平台,每天都会发送excel学习教程和资料。扫一扫明天就可以收到新教程
回复

使用道具 举报

 楼主| 发表于 2013-5-20 20:34 | 显示全部楼层
本帖最后由 qinhuan66 于 2013-5-20 21:15 编辑
hwc2ycy 发表于 2013-5-20 18:01
你把代码和附件再上传下,我这的全删了。

不好意思。刚回到家。谢谢您。
模糊查询(测试).rar (31.6 KB, 下载次数: 2)
回复

使用道具 举报

发表于 2013-5-20 21:00 | 显示全部楼层
  1. strSql = "select * from " & Database & " where 入院日期=#" & [D6] & "# " & " and 姓名 like '" & [B5] & "' and 本次住院医疗费总额=" & [B8]
复制代码
这个查询条件不够严谨,怎么能把住院的医疗费用总和也做为去重复的条件呢。
你说的重复,肯定是你的三个条件有不同的地方,你自己对比下。

入院日期,姓名,本次住院医疗费总额,这三个条件满足了才会不重复。

评分

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

查看全部评分

回复

使用道具 举报

 楼主| 发表于 2013-5-20 21:11 | 显示全部楼层
hwc2ycy 发表于 2013-5-20 21:00
这个查询条件不够严谨,怎么能把住院的医疗费用总和也做为去重复的条件呢。
你说的重复,肯定是你的三个条 ...

谢谢老师可以了。谢谢您的点醒
回复

使用道具 举报

 楼主| 发表于 2013-5-25 11:01 | 显示全部楼层
hwc2ycy 发表于 2013-5-17 08:14

老师如果下面这条代码建立数据库和访问数据库的位置增加一个文件夹(host)如何改呢?

是不是改这句即可?谢谢
AccessFile = ThisWorkbook.Path & "\data.mdb"


原始代码如下:
Sub 提交到Access数据库()


    Dim AccessFile As String, Database As String, SQL As String
    Dim StrConn$, strSql$
    Dim lLastrow&
    Dim arr, i&, j As Byte

    Dim AdoxCat As Object
    Dim AdoCmd As Object
    Dim AdoConn As Object
    Dim AdoRst As Object


    On Error GoTo Errcheck
    AccessFile = ThisWorkbook.Path & "\data.mdb"
    Database = "data"
    If Dir(AccessFile) = "" Then

        '检测文件是否存在,不存在则创建数据库
        Set AdoxCat = CreateObject("adox.catalog")
        AdoxCat.Create "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & AccessFile
        Set AdoConn = AdoxCat.ActiveConnection
        Set AdoCmd = CreateObject("ADODB.Command")
        Set AdoCmd.ActiveConnection = AdoConn
        AdoCmd.CommandText = "CREATE TABLE " & Database & _
                             " (年份 INTEGER,录入时间 datetime ,序号 text(3),定点医疗机构名称 text(50),医保卡号 text(12),单位名称 text(50)," & _
                             "姓名 text(8),性别 text(2),年龄 text(2),入院日期 datetime ,出院日期 datetime ,住院天数 INTEGER,出院诊断 text(50)," & _
                             "本次住院医疗费总额 REAL,甲类药费 real,乙类药费 real,进口药费 real,自费药费 real,超出范围 real," & _
                             "进口材料费 real,国产材料费 real,特殊检查费特殊治疗费 real,丙类项目 real,其它费用 real,起付段金额 real," & _
                             "个人政策自付小计 real,自费药品及自费项目 real,实际结算自付 real,统筹基金支付 real,大病求助基金支付 real," & _
                             "个人支付金额 real,本年住院次数 INTEGER,本年范围内费用累计 real,本年大病范围内费用累计 real)"
        AdoCmd.Execute , , 1    'adCmdText
        Set AdoCmd = Nothing
        Set AdoxCat = Nothing
        Set AdoConn = Nothing

    End If
    If Len([B3]) = 0 Or Len([F3]) = 0 Or Len([B5]) = 0 Or Len([B8]) = 0 Or Len([B13]) = 0 Then
        MsgBox "定点医疗机构名称(B3)、医保卡号(F3)、姓名(B5)、本次住院医疗费总额(B8)、统筹基金支付(B13)数据输入不完整,请先填好数据再进行提交。"
        Exit Sub
    End If

'    StrConn = "Provider= Microsoft.Jet.OLEDB.4.0;" & _
              "Data Source='" & AccessFile & "';"

    StrConn = "Provider=Microsoft.ACE.OLEDB.12.0;" & "Data Source='" & _
                      AccessFile & "';"




    Set AdoConn = CreateObject("ADODB.Connection")

    AdoConn.CursorLocation = 3
    AdoConn.Mode = 3
    AdoConn.CommandTimeout = 5
    AdoConn.connectionTimeout = 5
    AdoConn.Open StrConn

    If AdoConn.State <> 1 Then MsgBox "数据库连接失败", vbCritical + vbOKOnly: Exit Sub

    strSql = "select * from " & Database & " where 入院日期=#" & [D6] & "# " & " and 姓名 like '" & [B5] & "' and 本次住院医疗费总额=" & [B8]

    Set AdoRst = AdoConn.Execute(strSql)
    If AdoRst.RecordCount = 0 Then
        '        strSql = " insert into " & Database & " values(#" & _
                 '                 [B2] & "#,'" & [D2] & "','" & [F2] & "','" & [B3] & "','" & [F3] & "','" & [B4] & "'," & _
                 '                 [B5] & "," & [D5] & "," & [F5] & "','" & [B6] & "','" & [D6] & "','" & [F6] & "','" & [F7] & "," & _
                 '                 [B8] & "," & [D8] & ",'" & [F8] & "','" & [B9] & "','" & [D9] & "','" & [F9] & "," & _
                 '                 [B10] & "," & [D10] & ",'" & [F10] & "','" & [B11] & "','" & [D11] & "','" & [F11] & "," & _
                 '                 [B12] & "," & [D12] & ",'" & [F12] & "','" & [B13] & "','" & [D13] & "," & _
                 '                 [F13] & "," & [B14] & ",'" & [D14] & "','" & [F14] & "')"
        strSql = " insert into " & Database & " values(" & [B2] & ",#" & [D2] & "#,'" & [F2] & "','" & [B3] & "','" & [F3] & "','" & [B4] & "','" & _
                 [B5] & "','" & [D5] & "','" & [F5] & "',#" & [B6] & "#,#" & [D6] & "#," & [F6].Value & ",'" & [F7] & "'," & _
                 [B8] & "," & [D8] & "," & [F8] & "," & [B9] & "," & [D9] & "," & [F9] & "," & _
                 [B10] & "," & [D10] & "," & [F10] & "," & [B11] & "," & [D11] & "," & [F11] & "," & _
                 [B12] & "," & [D12] & "," & [F12] & "," & [B13] & "," & [D13] & "," & _
                 [F13] & "," & [B14] & "," & [D14] & "," & [F14] & ")"
        AdoConn.Execute strSql
        MsgBox "本次数据已成功添加的数据库"
        [B3] = ""
        [F3] = ""
        [B5] = ""
        [B8] = ""
        [B13] = ""
    Else
        MsgBox "注意:记录已经存在,不能重复添加!"
    End If

    AdoConn.Close
    Set AdoConn = Nothing
    Exit Sub

Errcheck:

    MsgBox Err.Number & vbNewLine & _
           Err.Description
End Sub



回复

使用道具 举报

发表于 2013-5-25 11:01 | 显示全部楼层
是的。
回复

使用道具 举报

 楼主| 发表于 2013-5-25 11:05 | 显示全部楼层
本帖最后由 qinhuan66 于 2013-5-25 11:09 编辑
hwc2ycy 发表于 2013-5-25 11:01
是的。

那如何改呢?是这样吗?
mKdir "d:\data"
回复

使用道具 举报

发表于 2013-5-25 11:25 | 显示全部楼层
qinhuan66 发表于 2013-5-25 11:05
那如何改呢?是这样吗?
mKdir "d:\data"

你试一下嘛,如果工作簿所在的文件夹,就换参数.MKDIR是建文件夹用的。
回复

使用道具 举报

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

本版积分规则

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

GMT+8, 2024-5-6 03:27 , Processed in 0.321777 second(s), 13 queries , Gzip On, Yac On.

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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