|
||||
Access VB SQL - Useful VB SQL for Access Functions In Access VB there are different types of code which needs to run depending on :- 1. Whether the Query is Defined in the Query Section of your database 2. whether values need to be passed or received from the VB/SQL/Query The code below gives working examples depending on whether the code or parameter passing is required:- Definitions required at top of VB or function ================================================= Dim sQueryName As String Dim strSQLSTMT As String Dim strFN As String Dim strSheetName As String Dim db As DAO.Database Dim qd As DAO.QueryDef @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ NO VALUES PASSED VB to run SQL ==================== Dim strSQLSTMT As String strSQLSTMT = "INSERT INTO datatable ( [no], turn, [isbn 13] )" strSQLSTMT = strSQLSTMT & " SELECT s1.no, s1.turn, s1.[isbn 13]" strSQLSTMT = strSQLSTMT & " FROM" & strSheetName & " AS s1;" CurrentDb.Execute strSQLSTMT VB to run defined Access Query ================================= sQueryName = "UpdateTerritories" Set qd = db.QueryDefs(sQueryName) qd.Execute @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ VALUE RETURNED VB to run SQL ================ ' ' get number of rows loaded into reCcount ' strSQLSTMT = "SELECT Count(*) FROM msysobjects m WHERE m.type=1" strSQLSTMT = strSQLSTMT & " and m.name like '*ImportError*';" Set rec = db.OpenRecordset(strSQLSTMT) With rec .MoveLast .MoveFirst recCount = .Fields(0) .Close End With VB to run a defined Access Query =================================== ' ' get number of rows loaded into recCount ' sQueryName = "DataCount" Set qd = db.QueryDefs(sQueryName) Set rst = qd.OpenRecordset() recCount = rst.RecordCount If recCount = 1 Then With rst .MoveFirst ""Me.txtRowsLoaded = CStr(.Fields("loaded")) End With Else " MsgBox ("Error has occurred during spreadsheet load") End If @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ VALUE PASSED VB run an Accessed defined query which returns nothing (note you cannot insert a table name only fields and values) ================================================================= Dim sQueryName As String Dim db As DAO.Database Dim qd As DAO.QueryDef Dim pr As Currency Set db = CurrentDb pr = Me.listboxPrice.ItemData(listBoxproducts.ListIndex) sQueryName = "Insert_Product" Set qd = db.QueryDefs(sQueryName) qd.Parameters("sheet") = strSheetName qd.Execute @@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@@ Useful SQL Statements put here to copy to own page later THIS DELETES ALL DATA WHERE DateCopied is more than 3 MONTHS ago ================================================================ DELETE * FROM BackupDataTable WHERE DateCopied < DateAdd("M", -3, Date()); THIS Inserts data into an existing table adds field DateCopied ================================================================== INSERT INTO BackupDataTable ( F1, F2, [ISBN 10], AUTHOR, TITLE, [TITLE 2], [Sub tit], [SUB TIT 2], [PUB DATE], DateCopied ) SELECT DataTable.F1, DataTable.F2, DataTable.[ISBN 10], DataTable.AUTHOR, DataTable.TITLE, DataTable.[TITLE 2], DataTable.[Sub tit], DataTable.[SUB TIT 2], DataTable.[PUB DATE], date() FROM DataTable; IP | ||||
|
||||