VBA操作提取出sql

這裏寫圖片描述

Public rngstart As Range
Public sid As String
Public OutFileName As String


Sub rule()
Dim iRowMax As Integer
Dim iCol As Integer
Dim rng As Range
Dim st As Worksheet
Dim iRowWalk As Integer
Dim iColumnWalk As Integer
Dim RuleID As Integer
Dim sql As String
init
iRowWalk = 1
iColumnWalk = 1
iColMax = rngstart.End(xlToRight).Column
iRowMax = rngstart.End(xlDown).row
RuleID = 1
'five stars result
Open ThisWorkbook.Path & "\rule.sql" For Output As #1
For iRowWalk = rngstart.row To iRowMax Step 2
        For iColumnWalk = rngstart.Column To iColMax Step 1
            'Debug.Print Cells(iRowWalk, iColumnWalk).Value
            sql = "insert into " & "rule_bak values(" & queto(CStr(RuleID)) & "," & queto(CStr(RuleID)) & "," & queto(sid) & ")"
        '    Debug.Print sql
            Print #1, sql
          '  iquestionUp = rngstart.Row - 3 - 1
            ' Debug.Print iquestionUp, rngstart.Row, rngstart.End(xlUp).Row
            num_index = 1
            rule_st = ""
             For i = rngstart.End(xlUp).row + 1 To rngstart.row - 3 Step 1
               opt = get_type(Mid(Replace(Cells(i, iColumnWalk), " ", ""), 1, 1))
                If opt = 0 Then
                    Debug.Print "222222222222222222222222"
                End If
                sql = "insert into result_bak( number ,index_num ,rid ) values ( " & queto(CStr(num_index)) & "," & queto(CStr(opt)) & "," & queto(CStr(RuleID)) & ")"
               ' Debug.Print sql
                 Print #1, sql
                 num_index = num_index + 1
                 rule_st = rule_st & CStr(opt)
             Next i

            tmp = Cells(iRowWalk, rngstart.Column - 2)
            If get_type(tmp) = 0 Then
                Exit Sub
            End If
            sql = "insert into result_bak( number ,index_num ,rid ) values ( " & queto(CStr(num_index)) & "," & get_type(tmp) & "," & queto(CStr(RuleID)) & ")"
         '   Debug.Print sql
            rule_st = rule_st & CStr(get_type(tmp))
             Print #1, sql
             num_index = num_index + 1
             tmp = Cells(iRowWalk + 1, rngstart.Column - 2)
                         If get_type(tmp) = 0 Then
                Exit Sub
            End If
            sql = "insert into result_bak( number ,index_num ,rid ) values ( " & queto(CStr(num_index)) & "," & get_type(Cells(iRowWalk + 1, rngstart.Column - 2)) & "," & queto(CStr(RuleID)) & ")"
           ' Debug.Print sql
            rule_st = rule_st & CStr(get_type(Cells(iRowWalk + 1, rngstart.Column - 2)))
             Print #1, sql
             sql_1 = "insert into result_bak_1(value ,rid ) values ( " & queto(rule_st) & "," & queto(CStr(RuleID)) & ")"
             Debug.Print sql_1
             Print #1, sql_1
           '    Debug.Print Cells(iRowWalk, rngstart.Column - 2), Cells(iRowWalk + 1, rngstart.Column - 2)


            temp = Cells(iRowWalk, iColumnWalk)
         '   Debug.Print "temp=" & temp
            arr = split(temp, " ")
            arr_len = UBound(arr)
       '     Debug.Print "arr_len=" & arr_len
            For ss = 0 To arr_len
                'sql = "insert into recommend_bak(star ,rid ,pid ) values( " & queto(Cells(iRowWalk, rngstart.Column - 1)) & "," & queto(CStr(RuleID)) & "," & queto(arr(ss)) & ")"
                sql_1 = "select " & queto(Cells(iRowWalk, rngstart.Column - 1)) & "," & queto(CStr(RuleID)) & "," & " pid  from product where type=" + queto(arr(ss))
                sql = "insert into recommend_bak(star ,rid ,pid ) " & sql_1
              '  Debug.Print sql_1
            '    Debug.Print sql
                 Print #1, sql
            Next ss

            temp = Cells(iRowWalk + 1, iColumnWalk)
            ' Debug.Print "temp=" & temp
            arr = split(temp, " ")
            arr_len = UBound(arr)
         '   Debug.Print "arr_len=" & arr_len
            For ss = 0 To arr_len
                'sql = "insert into recommend_bak(star ,rid ,pid ) values( " & queto(Cells(iRowWalk + 1, rngstart.Column - 1)) & "," & queto(CStr(RuleID)) & "," & queto(arr(ss)) & ")"
                sql_1 = "select " & queto(Cells(iRowWalk + 1, rngstart.Column - 1)) & "," & queto(CStr(RuleID)) & "," & " pid  from product where type=" + queto(arr(ss))
                sql = "insert into recommend_bak(star ,rid ,pid ) " & sql_1

           '     Debug.Print sql
                 Print #1, sql
            Next ss

             RuleID = RuleID + 1
        Next

        'Debug.Print "~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~"
Next

Close #1


MsgBox "Rule文件生成完畢!!!" & " ;文件路徑[" & ThisWorkbook.Path & "\Rule.sql]"
End Sub

Function get_type(str)
If str = "A" Then
get_type = 1
ElseIf str = "B" Then
get_type = 2
ElseIf str = "C" Then
get_type = 3
ElseIf str = "D" Then
get_type = 4
Else
Debug.Print str & "==================>"

get_type = 0
End If






End Function

Function queto(str)
queto = "'" & str & "'"
End Function
Function init()
Dim rowstart As Integer
Dim strPos As String

rowstart = Range("A1:B32767").Find("序號").row
strPos = "C" & CStr(rowstart + 7)
Set rngstart = Range(strPos)
sid = "29d1629a6e2d455f90b0565f7027e8c5"
End Function

Function split_1()
 A = split("JACB JA1G", " ")
  b = UBound(A)
 For i = 0 To b
    MsgBox ("The value of array in " & i & " is :" & A(i))
 Next
End Function

Function GetRid()
Dim conn  As New ADODB.Connection
Dim rs As New ADODB.Recordset

strconnt = "DRIVER={MySql ODBC 5.3 Unicode Driver};SERVER=" & "huliankfb.com" & ";Database=" & "Prointerview" & ";Uid=" & "root" & ";Pwd=" & "fotile" & ";Port =3307"
conn.Open strconnt
End Function


發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章