Выполнение SQL запросов в Access

СтудентИСессия
Дата: 15.01.2012 01:31:19
Доброго времени суток.
Подскажите пожалуйста какие конструкции могут быть использованы для выполнения SQL запросов в Access через VBA.
В идеале, со ссылками где об этом можно почитать.
Насколько я понял из гугла данные возвращаются через наборы записей.
1 из вариантов выборки данных взял из хелпа, запрос естественно отличается от первоначального=)
Sub SQLX()

  ' Dim dbs As Database
   Dim qdfTemp As QueryDef
   Dim rstEmployees As Recordset

   Set dbs = CurrentDb
   
   Set qdfTemp = dbs.CreateQueryDef("")

   ' Open Recordset using temporary QueryDef object and
   ' print report.
   SQLOutput "SELECT * FROM tbl1 ", qdfTemp

     dbs.Close

End Sub
'==========================================================
Function SQLOutput(strSQL As String, qdfTemp As QueryDef)

   Dim rst As Recordset

   ' Set SQL property of temporary QueryDef object and open
   ' a Recordset.
   qdfTemp.SQL = strSQL
   Set rst = qdfTemp.OpenRecordset

   Debug.Print strSQL

   With rst
      ' Enumerate Recordset.
      Do While Not .EOF
         Debug.Print "  " & !number
        MsgBox "  " & !id1 & "  " & !number
        
        
         .MoveNext
      Loop
      .Close
   End With

End Function


PS Заранее спасибо всем откликнувшимся
PS2 Посоветуйте, книжки по VBA+Access связкам....только не уровня 3-х томов Кнута, а что-то более userfriendly=)
PS3 Продолжаю пытать гугл....
сам двоищнек
Дата: 15.01.2012 01:43:08
СтудентИСессия,
>> где об этом можно почитать

в конспекте - не пробывал ?
а в целом, (ты будеш смеятся), в Хелпе по ВБА/Акс-у

>> Подскажите пожалуйста какие конструкции могут быть использованы для выполнения SQL запросов в Access через VBA.
1
currentDb.Execute strSQL ' no select
set rs = currentDb.OpenRecordset(strSQL) ' select

2
[set rs = ]currentProject.Connection.execute (strSQL) ' any
ILL HEAD
Дата: 15.01.2012 01:51:30
сам двоищнек
СтудентИСессия,
>> где об этом можно почитать

в конспекте - не пробывал ?
а в целом, (ты будеш смеятся), в Хелпе по ВБА/Акс-у

>> Подскажите пожалуйста какие конструкции могут быть использованы для выполнения SQL запросов в Access через VBA.
1
dim rs As DAO.recordset
currentDb.Execute strSQL ' no select
set rs = currentDb.OpenRecordset(strSQL) ' select

2
[dim rs As ADODB.recordset]
[set rs = ]currentProject.Connection.execute (strSQL) ' any


на всякий случай
ILL HEAD
Дата: 15.01.2012 01:54:10
... ибо ближний родственник на первой сесси и понимаю как нужна конкретика
сам двоищнек
Дата: 15.01.2012 01:58:00
ILL HEAD
на всякий случай


+1 :)
даа, думаю, для ТС - важное уточнение
СтудентИСессия
Дата: 15.01.2012 04:13:31
Уважаемые в хелпе наткнулся еще на
Public Sub DoSQL()

    Dim SQL As String

    SQL = "UPDATE Employees " & _
          "SET Employees.Title = 'Regional Sales Manager' " & _
          "WHERE Employees.Title = 'Sales Manager'"

    DoCmd.RunSQL SQL

End Sub

Насколько я понял из описания, оно предназначено для выполнения функций модификации данных, если неправильно понял поправьте.

Практикуется ли тут как в том, же Builder практика разделения запросов селективных от модифицирующих (Adoquery и Adocommand)
PS если есть еще пути, готов читать....гугл не очень активно пока делится информацией=(
сам двоищнек
Дата: 15.01.2012 04:31:22
СтудентИСессия
Уважаемые в хелпе наткнулся еще на
Public Sub DoSQL()

    Dim SQL As String

    SQL = "UPDATE Employees " & _
          "SET Employees.Title = 'Regional Sales Manager' " & _
          "WHERE Employees.Title = 'Sales Manager'"

    DoCmd.RunSQL SQL

End Sub

Насколько я понял из описания, оно предназначено для выполнения функций модификации данных, если неправильно понял поправьте.

Практикуется ли тут как в том, же Builder практика разделения запросов селективных от модифицирующих (Adoquery и Adocommand)
PS если есть еще пути, готов читать....гугл не очень активно пока делится информацией=(


>> Практикуется ли тут как в том, же Builder практика разделения запросов селективных от модифицирующих

да, собственно, пока, в этом топике только об этим и "тёрли"

>> Насколько я понял из описания, ..
    DoCmd.RunSQL SQL


даа, понял-то правильно ... , но это самый "тупой" способ "использованы для выполнения SQL запросов в Access", с "хорошим" багажом плюсовых "плюшек",
но не премемых "в отсутствии Акцесса"

зы
ты переходи к вопросам, ...
твоё "понимание" - мало кому интересно ...
СтудентИСессия
Дата: 15.01.2012 05:12:12
В конспекте пробовал, да вот на заочном дают крайне мало=(
Sub dosql()
Dim rs As DAO.Recordset
Dim strSQL As String
Set strSQL = "select * from tbl2"

Set rs = CurrentDb.OpenRecordset(strSQL)

      Do While Not rs.EOF
         Debug.Print "  " & rs!number
        MsgBox "  " & rs!id1 & "  " & rs!number
                 rs.MoveNext
      Loop
      rs.Close
   End With
End Sub

Попробовал вот в таком виде, однако оно отказалось работать. пишет ошибку компиляции "object required",но какой именно объект оно хочет не понятно=(
сам двоищнек
Дата: 15.01.2012 05:18:51
СтудентИСессия
В конспекте пробовал, да вот на заочном дают крайне мало=(
Sub dosql()
Dim rs As DAO.Recordset
Dim strSQL As String
'Set strSQL = "select * from tbl2"
strSQL = "select * from tbl2"

Set rs = CurrentDb.OpenRecordset(strSQL)

      Do While Not rs.EOF
         Debug.Print "  " & rs!number
        MsgBox "  " & rs!id1 & "  " & rs!number
                 rs.MoveNext
      Loop
      rs.Close
   End With
End Sub

Попробовал вот в таком виде, однако оно отказалось работать. пишет ошибку компиляции "object required",но какой именно объект оно хочет не понятно=(
EvAnd
Дата: 15.01.2012 05:35:22
СтудентИСессия
... книжки по VBA+Access связкам....только не уровня 3-х томов Кнута...

Сурядный, Шумилов. Аксесс 2007
СтудентИСессия

тоже двоищник