ExcelHome技术论坛

 找回密码
 免费注册

QQ登录

只需一步,快速开始

快捷登录

搜索
EH技术汇-专业的职场技能充电站 妙哉!函数段子手趣味讲函数 Excel服务器-会Excel,做管理系统 效率神器,一键搞定繁琐工作
HR薪酬管理数字化实战 Excel 2021函数公式学习大典 Excel数据透视表实战秘技 打造核心竞争力的职场宝典
让更多数据处理,一键完成 数据工作者的案头书 免费直播课集锦 ExcelHome出品 - VBA代码宝免费下载
用ChatGPT与VBA一键搞定Excel WPS表格从入门到精通 Excel VBA经典代码实践指南
123
返回列表 发新帖
楼主: exc-led

[求助] 对外部数据源进行复制、新增、删除

[复制链接]

TA的精华主题

TA的得分主题

发表于 2018-9-12 16:45 | 显示全部楼层
exc-led 发表于 2018-9-12 16:43
引用出来,然后怎么让xsl中的数据来回写到SQL中的数据库中呢?版主大大能否帮助实现一下?我还是无法知道 ...

代码审核后中,我也无法啊

别返回数据给数据库,如果错了,很麻烦的。

TA的精华主题

TA的得分主题

发表于 2018-9-12 16:45 | 显示全部楼层
Sub a()
Dim cnn As New cConnection, sql$, s$, bt$
Dim rs As New cRecordset, i%, j%
If [A2] = "" Then Call b
Dim arr
arr = [A1].CurrentRegion
For i = 1 To UBound(arr, 2)
    s = s & "[" & arr(1, i) & "],"
Next
s = s & " primary key([采购单创建日期],[请购/委外单号],[单号])"
sql = "CREATE TABLE T1(" & s & ")"
cnn.CreateNewDB ":memory:"
cnn.Execute sql
cnn.BeginTrans
s = ""
For i = 2 To UBound(arr)
    For j = 1 To UBound(arr, 2)
        s = s & MYV(arr(i, j)) & ","
    Next
        s = Left(s, Len(s) - 1)
        sql = "INSERT INTO T1 VALUES(" & s & ")"
        cnn.Execute sql
        s = ""
Next
arr = Sheet1.[A1].CurrentRegion
For j = 1 To UBound(arr, 2)
    bt = bt & "[" & arr(1, j) & "],"
Next
bt = Left(bt, Len(bt) - 1)
s = ""
For i = 2 To UBound(arr)
    sql = "SELECT * FROM  T1 WHERE [采购单创建日期]=" & MYV(arr(i, 1)) _
            & " AND [请购/委外单号]=" & MYV(arr(i, 2)) _
            & " AND [单号]=" & MYV(arr(i, 3))
    rs.OpenRecordset sql, cnn
    If rs.RecordCount = 0 Then
        s = ""
            For j = 1 To UBound(arr, 2)
                s = s & MYV(arr(i, j)) & ","
            Next
            s = Left(s, Len(s) - 1)
            sql = "REPLACE INTO T1(" & bt & ") VALUES(" & s & ")"
            cnn.Execute sql
            s = ""
    Else
        s = ""
        For j = 4 To UBound(arr, 2)
                s = s & "[" & arr(1, j) & "]=" & MYV(arr(i, j)) & ","
        Next
            s = Left(s, Len(s) - 1)
            sql = ""
            sql = "UPDATE T1 SET " & s
            cnn.Execute sql
    End If
Next
cnn.CommitTrans
[A2:Y9999] = ""
sql = "SELECT * FROM T1"
rs.OpenRecordset sql, cnn
[A2].CopyFromRecordset rs.DataSource
Set rs = Nothing
Set cnn = Nothing
End Sub
Sub b()
Dim r
r = Sheet1.[a99999].End(3).Row
Sheet1.Range("a2:v" & r).Copy [A2]
End Sub

Public Function MYV(myt)
If Trim(Len(myt)) = 0 Then
    MYV = "''"
ElseIf TypeName(myt) = "String" Then
    MYV = "'" & myt & "'"
ElseIf IsDate(myt) Then
    MYV = "'" & Format(myt, "YYYY-MM-DD") & "'"
Else
    MYV = myt
End If
End Function

评分

1

查看全部评分

TA的精华主题

TA的得分主题

发表于 2018-9-12 16:46 | 显示全部楼层
exc-led 发表于 2018-9-12 16:43
引用出来,然后怎么让xsl中的数据来回写到SQL中的数据库中呢?版主大大能否帮助实现一下?我还是无法知道 ...

xls 数据返回给你定义的数据库即可。

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 16:52 | 显示全部楼层
[广告] Excel易用宝 - 提升Excel的操作效率 · Excel / WPS表格插件       ★免费下载 ★       ★ 使用帮助
魂断蓝桥 发表于 2018-9-12 16:45
代码审核后中,我也无法啊

别返回数据给数据库,如果错了,很麻烦的。

没有代码例子,我是真的不知道怎么去编写....好痛苦

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-12 18:44 | 显示全部楼层
[广告] VBA代码宝 - VBA编程加强工具 · VBA代码随查随用  · 内置多项VBA编程加强工具       ★ 免费下载 ★      ★使用手册
魂断蓝桥 发表于 2018-9-12 16:45
Sub a()
Dim cnn As New cConnection, sql$, s$, bt$
Dim rs As New cRecordset, i%, j%

万分感谢版主大大,我会试着运行,再次万分感谢!!

TA的精华主题

TA的得分主题

 楼主| 发表于 2018-9-26 11:12 | 显示全部楼层
本帖最后由 exc-led 于 2018-9-26 15:57 编辑
魂断蓝桥 发表于 2018-9-12 16:46
xls 数据返回给你定义的数据库即可。

版主,我最近几天一直搞不懂这个MS数据返写到SQL数据库。首先,
Private Sub CommandButton1_Click()
    Dim conn As New ADODB.Connection
    conn.Open "Driver={SQL Server};server=192.168.1.240;uid=sa;pwd=excsqlserver;database=EXCERP;"

    Dim cmd As New ADODB.Command
    cmd.CommandType = adCmdStoredProc
    cmd.CommandText = "dbo.ERPJQ2"
    cmd.ActiveConnection = conn

    Dim RST As New ADODB.Recordset
    RST.Open cmd, , adOpenForwardOnly, adLockReadOnly

    Range("a1").CopyFromRecordset RST

    conn.Close

End Sub

也不知道是不是这样的?运行后导出来的数据少了一半,而且没有行头名称
我用的是SQL中ODBC数据源导出到MS,但您给我的,我一直没看懂0.0  版主能否抽空帮我看看?我真的是个小白,关键还有就是链接的SQL数据库中的存储过程中的表,其实无非就是想在原始表sheet2中直接点击“上传”按钮,直接把修改后的Q、R、S三列数据回写到SQL的数据库中,望版主赐教。谢谢


1.jpg
2.jpg

数据库

数据库
4.jpg
5.jpg

JQ.rar

1.67 MB, 下载次数: 1

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

本版积分规则

手机版|关于我们|联系我们|ExcelHome

GMT+8, 2025-1-16 03:58 , Processed in 0.021761 second(s), 10 queries , Gzip On, MemCache On.

Powered by Discuz! X3.4

© 1999-2023 Wooffice Inc.

沪公网安备 31011702000001号 沪ICP备11019229号-2

本论坛言论纯属发表者个人意见,任何违反国家相关法律的言论,本站将协助国家相关部门追究发言者责任!     本站特聘法律顾问:李志群律师

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