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
VBA操作提取出sql
發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.