Forum Coders' city Strona Główna Coders' city
Nasza pasja to programowanie!
 

 PomocPomoc   SzukajSzukaj   UżytkownicyUżytkownicy   GrupyGrupy  RejestracjaRejestracja 
Archiwum starego forum + teoria    RSS & Panel/SideBar
 ProfilProfil   Zaloguj się, by sprawdzić wiadomościZaloguj się, by sprawdzić wiadomości   ZalogujZaloguj 

Potrzebuję szybkiej odpowiedzi na moje pytanie... Zasady

[Access] Komunikat po przekroczeniu daty z tabeli



 
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Bazy danych
Zobacz poprzedni temat :: Zobacz następny temat  
Autor Wiadomość
ms



Dołączył: 06 Cze 2005
Posty: 2

PostWysłany: Pon Cze 06, 2005 7:00 pm  OP    Temat postu: [Access] Komunikat po przekroczeniu daty z tabeli Odpowiedz z cytatem Pisownia

Witam,
Do malej bazy w accesie chce dosztukowac jakies makro, ktore pokazywaloby mi komunikat po uruchomieniu, ze minal jakis termin. To znaczy, np. w tabeli jest pole 'data_spotkania' a ja chce zeby mi baza pokazala komunikat 5 dni przed ta data. Mozna cos takiego dorobic ?
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7905

PostWysłany: Pon Cze 06, 2005 10:24 pm      Temat postu: Access - operacje na dacie Odpowiedz z cytatem Pisownia

Nie wiem jak masz zorganizowną aplikację, bo o tym nic nie mówisz.
.......
Wynik kwerendy opartej na funkcji DateDiff z tabeli - jako warunek ukazania się, na przykład na tle Twojego standardowego formularza startowego, Msgbox lub innego dodatkowego formularza informacyjnego.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
ms



Dołączył: 06 Cze 2005
Posty: 2

PostWysłany: Wto Cze 07, 2005 7:43 am  OP    Temat postu: Re: Access - operacje na dacie Odpowiedz z cytatem Pisownia

karolinavb napisał:
Nie wiem jak masz zorganizowną aplikację, bo o tym nic nie mówisz.


Pole 'data_spotkania' jest zdefiniowane w tabeli (zawierajace np. dane klienta z ktorym mam sie spotkac) i dostepne poprzez formularz. Chcialbym po wlaczeniu bazy byl wywolywany skrypt i przypominal w postaci okienka ostrzezenia o spotkaniu.Dobrze by bylo,zeby rowniez zawieralo sie tam imie i nazwisko klienta.
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
karolinavb
Site Admin


Dołączył: 25 Maj 2005
Posty: 7905

PostWysłany: Wto Cze 07, 2005 11:57 am      Temat postu: Access - operacje na dacie Odpowiedz z cytatem Pisownia

Wiem, że w tabeli. lecz nie wiem jakie opcje uruchomieniowe ma Twoja aplikacja, zatem piszę przykładowo, aczkowiek start aplikacji od takiego komunikatu nie wydaje mi się właściwy, to moim zdaniem powinno być w innym miejscu... lub w odwrotnej kolejności, po starcie na przykład formularza z listą klientów ?


- refrencje w projekcie mdb do DAO 3.6
- treść kwerendy dla przykładowej tabeli o nazwie tblDate ( nie wiem jaka jest u Ciebie nazwa)

SELECT tblDate.data_spotkania, DateDiff("d",tblDate!data_spotkania,Now()) AS pozostalo, tblDate.nazwisko, tblDate.imie
FROM tblDate;


- nazwa kwerendy na przykład kwDatPozostalo
- tworzę formularz ciągły
- nazwa formularza frmDatPozostalo - modalny !
- na formularzy przycisk zamykający np Dalej
- źródło rekordów wspomniana kwerenda kwDatPozostalo
- na tym formularzu kontrolki związane dla pól zawartych w kwerendzie

- załóżmy, że po tym formularzu frmDatPozostalo z komunikatem
będzie uruchamiany formularz jakiś następny formularz frmStart (tego też nie wiem jak jest u Ciebie) - nie jest tu ważne co zawiera

- dodajesz do projektu mdb nowe makro
- nazwa tego makra AutoExec
- akcja - Uruchom kod
- na dole nazwa funkcji =StartMdb()


Kod:

Public Function StartMdb()
' nie wiem czy nie zechcesz potem aby ta liczba dni
' była parametrem wobec tego
Dim iLiczba As Integer
Dim sWhere As String
iLiczba = 16
sWhere = "kwDatPozostalo!pozostalo<" & CStr(iLiczba)
If WyznaczSpotkania(iLiczba) Then
    If Not IsLoaded("frmDatPozostalo") Then
        DoCmd.OpenForm "frmDatPozostalo", acNormal, , sWhere, acFormReadOnly, acDialog
    End If
End If
If Not IsLoaded("frmStart") Then
    DoCmd.OpenForm "frmStart"
End If
End Function

Function WyznaczSpotkania(Optional ByVal minLiczbaDni As Integer = 5) As Boolean
On Error GoTo WyznaczSpotkania_Error


Dim oDb     As DAO.Database
Dim oRs     As DAO.Recordset
Dim strSql   As String
Set oDb = CurrentDb
strSql = "SELECT  Count (*) AS ile FROM tblDate " & _
            "WHERE (((DateDiff('d',tblDate!data_spotkania,Now()))<" & _
            CStr(minLiczbaDni) & "));"
Set oRs = oDb.OpenRecordset(strSql, , dbReadOnly)
'On Error Resume Next
With oRs
    If .Fields("ile") > 0 Then
        WyznaczSpotkania = True
        ' MsgBox .Fields(0)
    End If
    .Close
End With
WyznaczSpotkania_Exit:
    Set oRs = Nothing
    Set oDb = Nothing
Exit Function

WyznaczSpotkania_Error:
    WyznaczSpotkania = False
MsgBox "Błąd - " & Err.Number & vbCrLf _
            & "Opis -  " & Err.Description & vbCrLf _
            & "Procedura - " & "WyznaczSpotkania", vbExclamation, "Access9 - WyznaSpotk"
Resume WyznaczSpotkania_Exit
End Function

Function IsLoaded(ByVal strFormName As String) As Boolean
' zwraca True jesli forma jest otawrat w widoku  Form view lub  Datasheet view.
Const conObjStateClosed = 0
Const conDesignView = 0
If SysCmd(acSysCmdGetObjectState, acForm, strFormName) <> conObjStateClosed Then
    If Forms(strFormName).CurrentView <> conDesignView Then
        IsLoaded = True
    End If
End If
End Function


można to zrobić na 100 sposobów, to naprawdę zależy od koncepcji Twojej mdb filtr kwerenda z parametrem... , formularz wołany z argumentem OpenArgs, a nie Where, co kto woli, to tylko taki symboliczny szkic....
Powrót do góry
Zobacz profil autora Wyślij prywatną wiadomość
Wyświetl posty z ostatnich:   
Odpowiedz do tematu    Forum Coders' city Strona Główna -> Bazy danych Wszystkie czasy w strefie CET (Europa)

Strona 1 z 1

 
Skocz do:  
Możesz pisać nowe tematy
Możesz odpowiadać w tematach
Nie możesz zmieniać swoich postów
Nie możesz usuwać swoich postów
Nie możesz głosować w ankietach
Możesz dodawać załączniki na tym forum
Możesz pobierać pliki z tego forum




Debug: strone wygenerowano w 0.18991 sekund, zapytan = 11
contact

| Darmowe programy i porady Jelcyna | Tansze zakupy w Helionie | MS Office Blog |