25. januar 2007 - 16:38Der er
25 kommentarer og 1 løsning
Nummerering ved klik på commando knap
Jeg er ved at lave en database til at registrere nogle indkøb på mit arbejde. Jeg vil gerne ha at jeg kan tildele at nummer til mit indkøb ved at trykke på en kommando knap - det skal dog være tilsat ikke at tildele at nummer.
Nummeret skal bestå af nogle bogstaver dagsdato og et forløbende nr. Den måde kan vi se en beskrivelse af indkøbet, samt datoen for indkøbet - samt hvilket nummer i en række af indkøb på netop denne dato.
D.v.s. at knappen skal placeres på en formular og der i den pågældende tabel er et felt til lagring af indkøbsID. Vil det sige, at løbenr. begynder forfra pr. dato.
Jeg er bange for, at jeg nok kommer galt afsted mht firmaets politik, hvis jeg mailer den til dig :-(
Har du ikke en mulighed for at foreslå noget uden at direkte se databasen.
Synes godt om
Slettet bruger
25. januar 2007 - 22:55#5
Her er en løsning, som du kan variere lige så tosset du vil!~)
Private Sub NavnPåKnap_Click() Dim a, b, c a = Format(Date, "yyyymmdd") b = Format(DCount("*", "NavnPåTabel", "Left([NavnPåFeltSomSkalIndeholdeIdNr], 8) = " & a) + 1, "000") c = InputBox("Indtast varekode") Me.NavnPåFeltSomSkalIndeholdeIdNr = a & "-" & b & "-" & c End Sub
Jeg har valgt at sætte dato forrest i formatet yyyymmdd og så et nummer, som holder 3 pladser, for så burde du kunne sortere på nummeret...
Synes godt om
Slettet bruger
25. januar 2007 - 22:57#6
altså det endelige nummer!~)
Synes godt om
Slettet bruger
25. januar 2007 - 23:01#7
En god ide ville nok også være at holde forkortelsen for de forskellige varer på lige mange bogstaver. Hvis det eks. var 3, så kunne en right([NavnPåFelt];3) i en forespørgsel bruges til at sortere efter vare eller bruges til søgning af bestemt vare..
Det ser ok ud - bortset fra, at den gi'r det samme nummer 2 gange.
Det er meget vigtigt at den tæller op... Så jeg får forskelle numre.
Hvis alle mine indkøb nu skal se således ud: BASdagsdato(yymmdd)-nummer(xx) Nummeret skal tælle op, men starte forfra hver dag.
(BAS er bare en forkortelse ikke noget vigtigt og skal bare være tekst)
Håber du kan hjælpe
Mvh Dna12
Synes godt om
Slettet bruger
26. januar 2007 - 10:22#9
Det burde virke (jeg kan godt få det til at virke med nummereringen, prøv at teste lidt mere og hold øje med din tabel, især datoen er interessant i forhold til nummereringen) og her er dine sidste tilpasninger:
Private Sub NavnPåKnap_Click() Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "Left([NavnPåFeltSomSkalIndeholdeIdNr], 6) = " & a) + 1, "00") Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b End Sub
Synes godt om
Slettet bruger
26. januar 2007 - 10:29#10
Hov...
Private Sub NavnPåKnap_Click() Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00") Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b End Sub
Synes godt om
Slettet bruger
26. januar 2007 - 10:45#11
Du kan evt. ligge en kontrol ind:
Private Sub NavnPåKnap_Click() If IsNull(Me.NavnPåFeltSomSkalIndeholdeIdNr) Then Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00") Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b Else MsgBox "Indkøbet er allerede registreret som " & Me.NavnPåFeltSomSkalIndeholdeIdNr End If End Sub
eller:
Private Sub NavnPåKnap_Click() Start: If IsNull(Me.NavnPåFeltSomSkalIndeholdeIdNr) Then Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00") Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b Else If MsgBox("Indkøbet er allerede registreret som " & Me.NavnPåFeltSomSkalIndeholdeIdNr & Chr(10) & Chr(13) & "Ønsker du at beholde dette løbenr?", vbYesNo) = vbNo Then Me.NavnPåFeltSomSkalIndeholdeIdNr = Null GoTo Start End If End If End Sub
Synes godt om
Slettet bruger
26. januar 2007 - 10:49#12
Hvis du ønsker at kunne registrere for andre datoer, kunne du lave et tekstfelt, som har dagsdato, som standardværdi og så ændre koden for a til:
a = Format(me.NavnPåTekstfelt, "yymmdd")
Du har nu mulighed for at ændre i tekstfeltet hvis du ønsker en anden dato!~)
Det virker fint med at gi det rigtige nummer bortset fra at den bli'r ved med at gi nummer 01. Hvis jeg trykker på knappen igen kan den gi f.eks nummer 4, men ikke nummer 2.
Hvad er det jeg gør forkert???
Synes godt om
Slettet bruger
26. januar 2007 - 13:25#14
Prøv at slette alle numre i tabellen og generer nye..
b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00")
prøv at se hvad flg. giver af info:
Private Sub NavnPåKnap_Click() Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00") msgbox a msgbox MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b End Sub
Synes godt om
Slettet bruger
26. januar 2007 - 13:40#17
Hvad er forresten de rigtige betegnelser for tabel og felter.. Det gør det lidt nemmere for dig at copy/paste!~)
Private Sub NavnPåKnap_Click() Dim a, b a = Format(Date, "yymmdd") b = Format(DCount("*", "NavnPåTabel", "MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) = " & a) + 1, "00") msgbox a msgbox me.NavnPåFeltSomSkalIndeholdeIdNr msgbox MID([NavnPåFeltSomSkalIndeholdeIdNr], 4, 6) Me.NavnPåFeltSomSkalIndeholdeIdNr = "BAS" & a & "-" & b End Sub
Private Sub Tildel_nr_Click() Dim a, b a = Format(Me.Modtagetdato, "yymmdd") b = Format(DCount("*", "tabelKemikalier", "MID([InterntBatchnummer], 4, 6) = " & a) + 1, "00") MsgBox a MsgBox Me.InterntBatchnummer MsgBox Mid([InterntBatchnummer], 4, 6) Me.InterntBatchnummer = "BAS" & a & "-" & b End Sub
Synes godt om
Slettet bruger
26. januar 2007 - 14:06#22
Prøv:
Private Sub Tildel_nr_Click() Dim a, b a = Format(Me.Modtagetdato, "yymmdd") b = Format(DCount("*", "tabelKemikalier", "NZ(MID([InterntBatchnummer], 4, 6),'0') = " & a) + 1, "00") Me.InterntBatchnummer = "BAS" & a & "-" & b End Sub
Det virker hos mig uden nogen som helst problemer...
og hvad angår microsoft:
Run-time Error 94: Invalid Use of Null Solution At this point, common sense may be able to advise you what exactly it is that is causing the error. Go back to the source of the problem and correct the mistake.
Hvis det ikke lykkedes dig så kan du prøve at lave en lille db, med formularen og tabellen med nogle få fiktive data, så zippe den og sende den til spgeertz på hotmail, så kan jeg måske se på det i aften. God weekend!~)
Hvis problemet stadig ikke er løst - så har jeg en model, der måske kan inspirere. Send evt. en mail til: pb@supertekst-it.dk - så returnerer jeg forslaget...
Private Sub Command16_Click() Dim a, b, db, Rec, antal
Set db = CurrentDb Set Rec = db.openRecordset("Kemikalie") antal = 0 For r = 1 To Rec.RecordCount With Rec If CStr(.Fields(6)) = Me.Modtaget_dato Then antal = antal + 1 End If .MoveNext End With Next r Rec.Close db.Close
antal = Format(antal + 1, "00#") Me.Internt_batch_nummer = "BAS" & Format(Me.Modtaget_dato, "yymmdd") & "-" & antal End Sub
Synes godt om
Ny brugerNybegynder
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.