Tekst informacyjny o polityce Cookies Close   
    
 
         
• 1. Strona główna
• 2. Kontakt: e-Mail
 
         
• 1. Baza danych
• 2. Tabele i kwerendy
• 3. Formularze
• 4. Raporty
• 5. Moduły i makra
• 6. Obsługa błędów
 
    

II.   VBA 

    
• 1. Okna Accessa
• 2. Okna Formularzy
• 3.Okna Dialogowe
• 4. Tekst
• 5. Liczby
• 6. Pliki
• 7. Inne
 
    

III.   API 

    
• 1. Ogólnie o API
• 2. Funkcje API
• 3. System
• 4. Praca z oknami
• 5. Okna dialogowe
• 6. API - Inne
 
         
• 1. Bitmapy 24 Bit
• 2. GDI i HDC
• 3. Kody kreskowe
• 4. Formant Image
• 5. FreeImage.dll
 
    

V.   Inne 

    
• 1. Shell i MsDOS
• 2. Kontrolki
• 3. ६ԼҚ ਸ
• 4. Unikod

 
Odwiedzin:

Logo AccessFAQ• I.2. Access - Tabele i kwerendy [1] •

2.1 Jak policzyć rekordy w tabeli ?
2.2 Jak sprawdzić, czy istnieje tabela ?
2.3 Jak sprawdzić, czy istnieje pole w tabeli ?
2.4 Jak dodać pole do tabeli bazowej lub tabeli połączonej ?
2.5 Jak zmienić nazwę pola w tabeli bazowej lub tabeli połączonej ?
2.6 Jak wywołując funkcję DLookup przekazać kwerendzie parametr ?
2.7 Dlaczego kwerenda wywołuje => Błąd wykonania '3061' Za mało parametrów. Oczekiwano np. 2 ?
2.8 Czy można odzyskać usuniętą przez pomyłkę tabelę ?
2.9 Jak obliczyć średnią liczb z 2 lub więcej pól tego samego rekordu ?
2.10 Jak ukryć tabelę, by nie była widoczna w oknie bazy (nawet po ustawieniu w menu Narzędzia/Opcje/Widok/Pokaż obiekty ukryte(systemowe) = True ?
2.11 Jak pobrać współrzędne kursora myszy nad oknem tabeli (kwerendy) poza obszarem danych ?
2.12 Jak sprawdzić czy zdarzenie MouseUp kwerendy, zainicjowane zdarzeniem MouseDown nad nagłówkiem kolumny lub selektorem rekordów, zaszło nad obszarem danych ?
2.13 Jak sprawdzić, czy tabela lub kwerenda otwarta jest w widoku Arkusz danych (DataSheet), a formularz lub raport nie jest w widoku Projekt (DesignView) ?

2.6 Jak wywołując funkcję DLookup przekazać kwerendzie parametr ?

grupa: pl.comp.bazy-danych.msaccess
wątek: DLookup i kwerenda parametryczna
przedstawił: Krzysztof Naworyta



<cyt>
... Masz jakąś kwerendę parametryczną, powiedzmy "Kwerenda1"
i chcesz wyliczyć coś:

? DLookUp("Pole1", "Kwerenda1", ...)?

Nie da się przekazać parametru !
Możesz to zrobić poprzez DAO:
</cyt>


' zwraca wartość jaką zwraciłaby funkcja DLookup, przy błędzie zwraca wartość Empty - nie obsługuje błędów: np. brak tabeli, brak pola, zła nazwa parametru, zły typ wartości parametru itp.
Public Function knDLookupParam(sQryName As String, _
sFieldName As String, _
sParamName As String, _
vParamValue As Variant) As Variant
Dim dbs As DAO.Database
Dim qdf As DAO.QueryDef
Dim rst As DAO.Recordset

Set dbs = CurrentDb
Set qdf = dbs.QueryDefs(sQryName)

qdf.Parameters(sParamName).Value = vParamValue

Set rst = qdf.OpenRecordset
With rst
If Not (.BOF And .EOF) Then
.MoveFirst
knDLookupParam = .Fields(sFieldName)
End If
End With
rst.Close
Set rst = Nothing

Set qdf = Nothing
Set dbs = Nothing

End Function

 ΔΔΔ 

 

2.7 Dlaczego kwerenda wywołuje => Błąd wykonania '3061' Za mało parametrów. Oczekiwano np. 2 ?

grupa: pl.comp.bazy-danych.msaccess
wątek: Za mało parametrów. Oczekiwany 1
Rozwiązanie autorstwa Krzysztofa Naworyty
znajduje się na: http://www.access.vis.pl/af0605a.htm

 ΔΔΔ 

 

2.8 Czy można odzyskać usuniętą przez pomyłkę tabelę ?

' Jeżeli po skasowaniu tabeli nie zamknąłeś bazy danych, to spróbuj odzyskać tabelę w poniższy sposób:
Private Declare Function timeGetTime Lib "winmm.dll" () As Long
' funkcja timeGetTime () ma za zadanie wygenerowanie jedynie unikatowego prefixu.


Private Sub btnTest_Click()
On Error GoTo ErrHandler
Dim dbs As DAO.Database
Dim rst As DAO.Recordset
Dim sSQLTmp As String
Dim sSQLUndelete As String
Dim sPrefix As String
Const MY_SUFIX As String = "UndeletedTbl"

sSQLTmp = "SELECT MSysObjects.Name FROM MSysObjects " & _
"WHERE Left$([Name],4)='~tmp'" & ";"

Set dbs = CurrentDb
Set rst = dbs.OpenRecordset(sSQLTmp, dbOpenForwardOnly)

If rst.BOF Then
MsgBox "Nie mogę znaleźć usuniętej tabeli"
GoTo ExitHere
End If

Do Until rst.EOF
' utwórz unikalny prefix dla odzyskanej tabeli
sPrefix = CStr(timeGetTime)
sSQLUndelete = "SELECT * INTO " & _
sPrefix & "_UndeletedTable" & _
" FROM [" & rst!Name & "];"
dbs.Execute sSQLUndelete
rst.MoveNext
Loop

Application.RefreshDatabaseWindow

ExitHere:
rst.Close
Set rst = Nothing
Set dbs = Nothing
Exit Sub
ErrHandler:
MsgBox "Błąd nr: " & Err.Number & vbNewLine & _
Err.Description
Resume ExitHere
End Sub

 ΔΔΔ