manman89

QUERY ACCESS DATABASE (*.MDB) WITH VBSCRIPT

May 31st, 2013
104
0
Never
Not a member of Pastebin yet? Sign Up, it unlocks many cool features!
text 3.21 KB | None | 0 0
  1. VBSCRIPT TO EXECUTE AN ACTION QUERY OR QUERIES IN A JET (*.MDB) DATABASE
  2.  
  3. Function vmkCommand(SQL, MDB)
  4. On Error Resume Next
  5.  
  6. Dim FSO : Set FSO = CreateObject("Scripting.FileSystemObject")
  7. If (FSO Is Nothing) Then
  8. Msgbox "ACTIVEX COMPONENT CAN'T CREATE OBJECT" & vbcrlf & vbcrlf & "SCRIPTING.FILESYSTEMOBJECT",,VersionMin
  9. vmkCommand = False
  10. Exit Function
  11. End If
  12.  
  13. If FSO.FileExists(MDB) Then
  14. Dim OJET : Set OJET = CreateObject("DAO.DBEngine.36")
  15. If (OJET Is Nothing) Then
  16. Msgbox "ACTIVEX COMPONENT CAN'T CREATE OBJECT" & vbcrlf & vbcrlf & "DAO.DBENGINE.36",,VersionMin
  17. vmkCommand = False
  18. Exit Function
  19. End If
  20.  
  21. Dim ODB : Set ODB = OJET.OpenDatabase(MDB)
  22. If (ODB Is Nothing) Then
  23. Msgbox "COULD NOT OPEN THE DATABASE " & chr(34) & UCase(FSO.GetFileName(MDB)) & chr(34),,VersionMin
  24. vmkCommand = False
  25. Exit Function
  26. End If
  27.  
  28. If Len(SQL) < 6 Then
  29. Msgbox "YOUR SQL IS NOT VALID",,VersionMin
  30. vmkCommand = False
  31. Exit Function
  32. End If
  33.  
  34. Dim Command : Command = UCase(Mid(SQL,1,6))
  35. Select Case Command
  36. Case "SELECT"
  37. Dim RST : Set RST = ODB.OpenRecordset(SQL)
  38. If (Err.Number > 0) Then
  39. vmkCommand = UCase(Err.Description)
  40. Else
  41. If Not(RST.EOF And RST.BOF) Then
  42.  
  43. Dim TTCols, TTColsTMP : TTCols = 0
  44. Do While 1
  45. TTColsTMP = RST(TTCols)
  46. If Err.Number > 0 Then TTCols = TTCols - 1 : Exit Do
  47. TTCols = TTCols + 1
  48. Loop
  49.  
  50. Dim IRow : IRow = 0
  51. Dim Rows(), Cols()
  52.  
  53. RST.MoveFirst
  54. Do While Not RST.EOF
  55.  
  56. ReDim Cols(TTCols)
  57. Dim I : I = 0
  58. For I = 0 To TTCols
  59. Cols(I) = RST(I)
  60. Next
  61.  
  62. ReDim Preserve Rows(IRow)
  63. Rows(IRow) = Cols
  64. IRow = IRow + 1
  65.  
  66. RST.MoveNext
  67. Loop
  68. vmkCommand = Rows
  69. Else
  70. vmkCommand = ""
  71. End If
  72. End If
  73. RST.Close
  74. Set RST = Nothing
  75. Exit Function
  76. Case "INSERT", "DELETE", "UPDATE"
  77. ODB.Execute SQL, 128
  78. If (Err.Number > 0) Then
  79. vmkCommand = UCase(Err.Description)
  80. Else
  81. vmkCommand = True
  82. End If
  83. Exit Function
  84. Case Else
  85. Msgbox "YOUR SQL IS NOT VALID",,VersionMin
  86. vmkCommand = False
  87. Exit Function
  88. End Select
  89.  
  90. ODB.Close
  91. Set ODB = Nothing
  92. Set OJET = Nothing
  93. vmkCommand = True
  94. Else
  95. Msgbox UCase(FSO.GetFileName(MDB)) & " IS MISSING",,VersionMin
  96. vmkCommand = False
  97. End If
  98. End Function
  99.  
  100. Function IsArrayDimmed(Arr)
  101. IsArrayDimmed = False
  102. If IsArray(Arr) Then
  103. On Error Resume Next
  104. Dim UB : UB = UBound(Arr)
  105. If (Err.Number = 0) And (UB >= 0) Then IsArrayDimmed = True
  106. End If
  107. End Function
  108.  
  109. ''' TEST '''
  110.  
  111. Dim Query
  112. Query = vmkCommand("SELECT * FROM USER", "C:\USER.MDB")
  113. If IsArrayDimmed(Query) Then
  114. Dim I
  115. For I = 0 To UBound(Query)
  116. If IsArrayDimmed(Query(I)) Then
  117. Dim I1
  118. For I1 = 0 To UBound(Query(I))
  119. Msgbox Query(I)(I1)
  120. Next
  121. End If
  122. Next
  123. Else
  124. Msgbox Query
  125. End If
  126.  
  127. Query = vmkCommand("DELETE * FROM USER", "C:\USER.MDB")
  128. Msgbox Query
  129.  
  130. Query = vmkCommand("INSERT INTO USER([ID],[PASS]) VALUES(1,888);", "C:\USER.MDB")
  131. Msgbox Query
  132.  
  133. Query = vmkCommand("UPDATE USER SET [PASS]=999 WHERE [ID]=1", "C:\USER.MDB")
  134. Msgbox Query
Advertisement
Add Comment
Please, Sign In to add comment