请问vba怎么实现访问AS400里面的db2数据库

请问vba怎么实现访问AS400里面的db2数据库,第1张

配置一个数据源或自己创建链接

Function ConnectionAs400(serverName As String, userid As String, password As String, ccsid As Long, libl As String) As Object

    '创建ADODB AS400连接

    Dim conn As Object

On Error GoTo ErrorConnHandler

    Set conn = CreateObject("ADODB.Connection")

    conn.Provider = "IBMDA400"   '驱动名称 IBMDA400 功能最全但不支持SQL的事务 IBMDASQL 仅支持SQL(支持事务),IBMDARLA 不支持块访存

    conn.Properties("Library List") = libl '初始化目录

    conn.Properties("Naming Convention") = 1  '命名约定,0:*SQL  1:*SYS

    'conn.Properties("Force Translate") = 65535

    conn.Properties("Force Translate") = ccsid '强制转换 缺省值为 65535,表示不执行转换 值为 0  则使用作业的CCSID执行转换  '836,935,937,1388,4932,4933,5484,9028

    conn.Properties("Query Storage Limit") = -1  '查询存储限制 -1表示无限制

    conn.Properties("Use SQL Packages") = False '使用 SQL 程序包

    conn.Properties("Convert Date Time To Char") = "False" '将日期时间转换为字符型

    conn.Properties("Data Source") = serverName

    conn.Properties("User ID") = userid

    conn.Properties("Password") = password

    conn.Open

    'conn.Open "Provider=IBMDA400Data Source=Deve.inah.hk.hsbcUser ID=HLIPGRP01"

    Set ConnectionAs400 = conn

    Debug.Print conn.Properties("Job Name")

    Exit Function

ErrorConnHandler:

    MsgBox ("连接AS400失败:" + CStr(err.Number))

    Dim ErrorMsg As Object

    For Each ErrorMsg In conn.Errors

        MsgBox (ErrorMsg.Description)

    Next

   

End Function

Function clsConnection(conn As Object) As Boolean

    '关闭ADODB AS400连接

    clsConnection = True

On Error GoTo ErrorCloseHandler

    If Not conn Is Nothing Then

        conn.Close

    End If

   

    Set conn = Nothing

    Exit Function

ErrorCloseHandler:

首先在工具 引用 中引入ADO组件(全名叫Microsoft ActiveX Data什么的,很好好找),然后声明一个连接变量 conn as ADODB.Connetion用来连接数据库,这里需要连接字符串,不知道你是什么类型数据库,所以连接字符串无法给出,再声明一个数据集变量ds as ADODB. DATASET用于执行SQL语句并返回结果集,得到结果集之后就可以访问里面的内容了

1、汉字在前,数字在后面的情形。可以用MID,min, find三个函数来实现提取里面的数字。如图:在B2输入“=MID(A1,MIN(FIND({0,1,2,3,4,5,6,7,8,9},A1&“0123456789”)),20)”

2 、把单元格里面所有的数字都提出来。可以使用宏。先打开VBA编辑器。工具——宏——visual basic 编辑器

3、在编辑器里点击插入——模块。在模块那里输入如下代码:

Function zzsz(xStr As String) As StringDim i As IntegerFor i = 1 To Len(xStr)If IsNumeric(Mid(xStr, i, 1)) Then zzsz = zzsz &Mid(xStr, i, 1)NextEnd Function

4、回到工作表,在B2单元格那里输入“=zzsz(A2)”。就可以用VBA把A2单元格里所有的数字都提取出来了,如图所示。

Excel怎么只提取表格中的数字

5、指定从第几个数组提取开始。也就是说在不连续的那些数字中,从第几次出现的数组开始提取。同样在模块那里输入如下代码:

Function GetNums(rCell As Range, num As Integer) As StringDim Arr1() As String, Arr2() As StringDim chr As String, Str As StringDim i As Integer, j As IntegerOn Error GoTo line1

Str = rCell.TextFor i = 1 To Len(Str)chr = Mid(Str, i, 1)If (Asc(chr) 《 48 Or Asc(chr) 》 57) ThenStr = Replace(Str, chr, “ ”)End IfNext

Arr1 = Split(Trim(Str))ReDim Arr2(UBound(Arr1))For i = 0 To UBound(Arr1)If Arr1(i) 《》 “” ThenArr2(j) = Arr1(i)j = j + 1End IfNext

GetNums = IIf(num 《= j, Arr2(num - 1), “”)line1:End Function


欢迎分享,转载请注明来源:内存溢出

原文地址:https://54852.com/sjk/9402964.html

(0)
打赏 微信扫一扫微信扫一扫 支付宝扫一扫支付宝扫一扫
上一篇 2023-04-28
下一篇2023-04-28

发表评论

登录后才能评论

评论列表(0条)

    保存