Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Программирование, связанное с MS Office > Обращение к базе


Автор: Twwi 11.5.2007, 11:06
Друзья,  smile 
В VBA давно уже, но вот для Access-a - впервые smile 
Я не могу даже обратиться к текущей базе из модуля smile и как ни странно, листание хелпа меня не вразумляют.
Помогите пожалуйста, как из модуля базы обратиться к ее таблице, как обратиться к записям?
Мне нужно по всей таблице в определенном поле почистить ненужные символы...
Спасибо,  smile 

Автор: Twwi 11.5.2007, 20:12
Про гугл то я и забыла, там по первой ссылке прекрасные примеры. Не то что рашн пейджез и хелп smile
Думаю я не первая и не последняя.. http://www.fontstuff.com/vba/vbatut02.htm
Код

Sub PickRandom()
    Dim db As Database
    Dim tdf As TableDef
    Dim fld As Field
    Dim rst As Recordset
    Dim strSQL As String
    Dim strTableName As String

' 1: Create a new temporary table containing the required fields
    strSQL = "SELECT tblStaff.Firstname, tblStaff.Lastname " & _
             "INTO tblTemp " & _
             "FROM tblStaff;"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True
    
' 2: Add a new field to the new table
    Set db = CurrentDb()
    Set tdf = db.TableDefs("tblTemp")
    Set fld = tdf.CreateField("RandomNumber", dbSingle)    
    tdf.Fields.Append fld

' 3: Place a random number in the new field for each record
    Set rst = db.OpenRecordset("tblTemp", dbOpenTable)    
    rst.MoveFirst
    Do
        Randomize
        rst.Edit
            rst![RandomNumber] = Rnd()
        rst.Update
        rst.MoveNext
    Loop Until rst.EOF    
    rst.Close
    Set rst = Nothing
    
' 4: Sort the data by the random number and move the top 25 into a new table
    strTableName = "tblRandom_" & Format(Date, "ddmmmyyyy")
    strSQL = "SELECT TOP 25 tblTemp.Firstname, tblTemp.Lastname " & _
             "INTO " & strTableName & " " & _
             "FROM tblTemp " & _
             "ORDER BY tblTemp.RandomNumber;"
    DoCmd.SetWarnings False
    DoCmd.RunSQL strSQL
    DoCmd.SetWarnings True

' 5: Delete the temporary table
    db.TableDefs.Delete ("tblTemp")
End Sub



Автор: mihanik 15.5.2007, 08:50
Молодец, что не только сама разобралась, но и выложила решение для всех!!!

Молодец!!!

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)