Avatar billede dla Praktikant
29. november 2004 - 12:12 Der er 9 kommentarer og
1 løsning

INSERT INTO sammen med INPUTBOX

Jeg vil ved hjælp af et tryk på en formularknap føje poster til en tabel som fortæller hvilket brev der er blevet sendt til hvem og hvornår.
Tabellen hedder tblDato og indeholder felterne IDKunde, Dato (med standardværdien Date()), og feltet Case
Jeg har denne kode:

INSERT INTO tblDato (IDKunde)
SELECT tblHovedtabel.ID
FROM tblHovedtabel
WHERE Udskrives=true

Dette virker fint, men jeg mangler at putte tekst ind i feltet Case, og det vil jeg gøre med en inputboks, der kommer op når man trykker på knappen, teksten er den samme for alle posterne.

Desuden skal den kun tilføje poster hvis der ikke allerede er en post med samme Case og IDKunde.
Avatar billede jensen363 Forsker
29. november 2004 - 12:15 #1
Teksten er den samme for alle posterne !!! ... hvorfor så ikke benytte standardværdi i tabelegenskaber ????
Avatar billede jensen363 Forsker
29. november 2004 - 12:21 #2
Hvis du vil indsætte forskellige tekst fra en inputboks, kan følgende benyttes :

Private Sub Kommandoknap_Click()
Dim Message, Title, Default, MyValue
   
    Message = "Bemærkninger til aktuel post"
      Title = "Opdatéring af Data" 
      Default = "Valgfri bemærkning"
    MyValue = InputBox(Message, Title, Default)
   
    DoCmd.SetWarnings False
        DoCmd.RunSQL "INSERT INTO tblDato (Case) VALUES ('" & MyValue & "');"
    DoCmd.SetWarnings True
   
End Sub
Avatar billede overchord Nybegynder
29. november 2004 - 12:26 #3
For at chekke at der ikke allerede er sent en post kan du bruge

if DCount("IDKunde","tblDato", "IDKunde = " & me.IDKunde & " AND Case = " & me.case )>0 then
msgbox "brevet er allerede sendt"
else
Koden fra jensen363
end if
Avatar billede dla Praktikant
29. november 2004 - 12:52 #4
Jensen363> fordi næste gang man sender et brev skal der stå noget andet i feltet Case.

Ang. din kode: hvordan får jeg sat IDKunde værdien ind?
Avatar billede jensen363 Forsker
29. november 2004 - 13:10 #5
Private Sub Kommandoknap_Click()
Dim Message, Title, Default, MyValue
   
    Message = "Bemærkninger til aktuel post"
      Title = "Opdatéring af Data"
      Default = "Valgfri bemærkning"
    MyValue = InputBox(Message, Title, Default)
   
    DoCmd.SetWarnings False

    DoCmd.RunSQL "INSERT INTO tblDato ( IDKunde, [Case] ) " & _
        "SELECT tblHovedtabel.ID, ('" & MyValue & "') AS [VALUES] " & _
        "FROM tblHovedtabel " & _
        "WHERE (((tblHovedtabel.Udskrives)=True));"
   
    DoCmd.SetWarnings True
   
End Sub
Avatar billede dla Praktikant
29. november 2004 - 13:26 #6
Super! Nu mangler jeg bare at få den til at chekke om posten allerede findes, for din kode virker ikke, overchord. Den kender ikke Me.IDKunde og Me.Case og det er jo klart nok, da felterne findes i tabellen tblDato og ikke på den formular knappen er på.
Avatar billede dla Praktikant
29. november 2004 - 13:50 #7
Og hvis man trykker Cancel på inputboksen, skal den ikke tilføje poster, det gør den nu, bare uden tekst i Case-feltet. Kan I klare det?
Avatar billede dla Praktikant
29. november 2004 - 14:26 #8
Jeg har løst problemet ved at lave en UPDATE på Udskrives-feltet efter INSERT sætningen:

DoCmd.RunSQL "UPDATE tblHovedtabel Set Udskrives = False Where tblHovedtabel.Udskrives = True"

Kan man ikke forhindre inputboksen i at komme op hvis alle Udskrives-felter = False? Som det er nu kommer boksen op, selv om der ikke er nogen poster at tilføje.
Avatar billede dla Praktikant
29. november 2004 - 14:53 #9
Sidste problem har jeg også løst:

    If DCount("Udskrives", "tblHovedtabel", "Udskrives = TRUE") > 0 Then
        Koden fra jensen363
    Else
        MsgBox "Der er ingen nye afsendte breve"
    End If

Jeg siger tak for hjælpen.
Avatar billede jensen363 Forsker
29. november 2004 - 15:45 #10
Tak for point ... fik ikke lige tid til at give en 100 % løsning ... sorry
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