Avatar billede itumpe Nybegynder
05. februar 2008 - 09:38 Der er 5 kommentarer og
1 løsning

Betinget Message Box

Hej

Jeg har 2 tabeller. Lad os kalde dem Tabel_1 og Tabel_2. Begge tabeller indeholder en kolonne af datoer og en kolonne med afdelingsnumre.

Jeg ønsker følgende:

Ved tryk på knap, hvis Maks Dato i Tabel_1 er mindre end Maks Dato i Tabel_2, for en given afdeling ...



MessageBox "Datoerne er allerede indeholdt i Tabel_2. Ønsker du at fortsætte (J/N)"

Her, hvis bruger trykker J på tastaturet, skal der fortsættes med det næste step, eller skal processen stoppe.

Håber I kan hjælpe med en stump kode. Hvis noget er uklart, så skriv det endeligt.

ITumpen.
Avatar billede terry Ekspert
05. februar 2008 - 09:45 #1
Something like this


If DMax("Dato", "tabel") < DMax("Dato", "tabel2") Then


    If MsgBox("Continue ?", vbYesNo) = vbYes Then
   
   
    End If

   

End If
Avatar billede terry Ekspert
05. februar 2008 - 09:46 #2
You also need a criteria for the "afdeling" in each dMax

Example:

DMax("Dato", "tabel", "Afdeling = 1" )
Avatar billede itumpe Nybegynder
05. februar 2008 - 10:10 #3
Hej Terry,

Hvis jeg viser dig den kode som skal indeholde løsningen, vil du ikke indbygge din løsning i den?

Koden er som følger mellem linjerne:

-------------------------------------------

Function ImportExcelVagtplan()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE IndlaesIDB.* FROM IndlaesIDB"
   
DoCmd.TransferSpreadsheet transfertype:=acImport, _
    spreadsheettype:=acspreadsheettypeexcel17, _
    tablename:="IndlaesIDB", _
    filename:="" & Forms!HvdFrm!Tekst16, hasfieldnames:=True

DoCmd.RunSQL "Delete IndlaesIDB.Idnr FROM IndlaesIDB WHERE (((IndlaesIDB.Idnr) Is Null))"

DoCmd.RunSQL "UPDATE tblAfdelinger INNER JOIN IndlaesIDB ON tblAfdelinger.tblAfdnr = IndlaesIDB.Afdarb SET IndlaesIDB.VagtPause = [PraeInstilMaltid]"

DoCmd.RunSQL "INSERT INTO tblTimeregistrering ( LoennrTimereg, AfdArb, Dato, VagtStart, VagtSlut, TimeType, Moedt, Gaaet, Maltid, VagtPause ) " & _
"SELECT IndlaesIDB.Idnr, IndlaesIDB.Afdarb, tblDato.DatoID, IndlaesIDB.Vagtstart, IndlaesIDB.Vagtslut, IndlaesIDB.Timetype, IndlaesIDB.Moedt, IndlaesIDB.Gaaet, tblAfdelinger.PraeInstilMaltid, IndlaesIDB.VagtPause " & _
"FROM tblDato INNER JOIN (tblAfdelinger INNER JOIN (tblMedarbProfil INNER JOIN IndlaesIDB ON tblMedarbProfil.ID = IndlaesIDB.Idnr) ON tblAfdelinger.tblAfdnr = IndlaesIDB.Afdarb) ON tblDato.Dato = IndlaesIDB.Dato"

DoCmd.SetWarnings True

MsgBox ("Vagtplanen er indlæst")


End Function

-----------------------------

Bemærk:
Tabel_2 er IndlaesIDB
Tabel_1 er tblTimeregistrering
Dato er Dato
Afdeling er ArbAfd

Jeg regner med, at løsningen skal indbygges liuge før DoCmd.RunSQL "INSERT INTO tblTimeregistrering ...

Håber du har tid til at hjælpe.

Mvh.

ITumpen.
Avatar billede terry Ekspert
05. februar 2008 - 10:29 #4
if you can send me your dB (or part of) it may be easier for me

ekspertenATsanthell.dk
AT = @
Avatar billede itumpe Nybegynder
05. februar 2008 - 13:05 #5
Det er super Terry! Tak:

Function ImportExcelVagtplan()
DoCmd.SetWarnings False
DoCmd.RunSQL "DELETE IndlaesIDB.* FROM IndlaesIDB"
   
DoCmd.TransferSpreadsheet transfertype:=acImport, _
    spreadsheettype:=acspreadsheettypeexcel17, _
    tablename:="IndlaesIDB", _
    filename:="" & Forms!HvdFrm!Tekst16, hasfieldnames:=True

DoCmd.RunSQL "Delete IndlaesIDB.Idnr FROM IndlaesIDB WHERE (((IndlaesIDB.Idnr) Is Null))"

If DMax("Dato", "tblTimeregistrering", "AfdArb = 43") < DMax("Dato", "IndlaesIDB", "AfdArb = 43") Then

    If MsgBox("Continue ?", vbYesNo) = vbYes Then
   
        DoCmd.RunSQL "UPDATE tblAfdelinger INNER JOIN IndlaesIDB ON tblAfdelinger.tblAfdnr = IndlaesIDB.Afdarb SET IndlaesIDB.VagtPause = [PraeInstilMaltid]"

        DoCmd.RunSQL "INSERT INTO tblTimeregistrering ( LoennrTimereg, AfdArb, Dato, VagtStart, VagtSlut, TimeType, Moedt, Gaaet, Maltid, VagtPause ) " & _
        "SELECT IndlaesIDB.Idnr, IndlaesIDB.Afdarb, tblDato.DatoID, IndlaesIDB.Vagtstart, IndlaesIDB.Vagtslut, IndlaesIDB.Timetype, IndlaesIDB.Moedt, IndlaesIDB.Gaaet, tblAfdelinger.PraeInstilMaltid, IndlaesIDB.VagtPause " & _
        "FROM tblDato INNER JOIN (tblAfdelinger INNER JOIN (tblMedarbProfil INNER JOIN IndlaesIDB ON tblMedarbProfil.ID = IndlaesIDB.Idnr) ON tblAfdelinger.tblAfdnr = IndlaesIDB.Afdarb) ON tblDato.Dato = IndlaesIDB.Dato"

        DoCmd.SetWarnings True

        MsgBox ("Vagtplanen er indlæst")
   
    End If

End If



End Function
Avatar billede terry Ekspert
05. februar 2008 - 15:26 #6
selv tak
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester