anoniem Geplaatst: 27 februari 2004 Delen Geplaatst: 27 februari 2004 Ik ben bezig een database te bouwen voor het bijhouden van ontvangen facturen. Die facturen die krijgen allemaal een stempel met zo'n stempel die automatisch doornummert. Dit nummer komt natuurlijk in mijn database, maar 99 van de 100 keer is het volgende nummer gelijk aan het vorige nummer + 1. Nu wil ik graag als defaultwaarde in het veld "waarde laatste record + 1" opnemen. maar ik krijg het niet voor elkaar. Hoe ga ik te werk? Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Tja, dat kan op verschillende manieren. Een daarvan is een 'invoerdatum' meegeven tijdens opslaan van record. Dan in de sql Select...Top 1 order by invoerdatum DESC Nummer is nummer + 1 Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Dat had ik dus ook al geprobeerd, maar dat met Group By: Last Dan krijg ik de laatst ingevoerde waarde in een query. Maar dan krijg ik die waarde niet in mijn formulier ge-upload... Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Hoezo...Group By? Probeer het maar eens zoals ik het schrijf. Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 heb de volgende query gegenereerd: [code:1:9ac1b2b9ec]SELECT TOP 1 tblVouchers.VoucherNumber FROM tblVouchers ORDER BY tblVouchers.InvoiceID DESC;[/code:1:9ac1b2b9ec]Ik heb voor de ID gekozen, omdat ik per dag wel 100 facturen inbreng, dus de datum is niet uniek genoeg in de query staat nu "3" en dat klopt: er zitten 3 vouchers in de tabel en het hoogste nummer is 3. In mijn form blijft het veld echter "1" roepen Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Als je een datum/tijd type gebruikt worden de verschillen in 100-sten van een seconde aangegeven. Kun je de tabel en code voor het optellen even geven? Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Sorry, Maar ik begrijp de vraag niet... Quote Link naar reactie
anoniem Geplaatst: 27 februari 2004 Auteur Delen Geplaatst: 27 februari 2004 Ik neem aan dat je een tabel hebt waar je de gegevens in opslaat. Geef even de relevante kolommen. Daarnaast, je telt 1 bij het laatst ingevoerde nummer op; hoe ziet dat er uit. Ik wil dus weten bij welke kolom je die 1 optelt, hoe je dat doet en hoe je dat toont. Quote Link naar reactie
anoniem Geplaatst: 1 maart 2004 Auteur Delen Geplaatst: 1 maart 2004 tblEntities EntityID*(1) EntityName tblVouchers InvoiceID* Entity(1) EntryDate VoucherNumber(2) Supplier Expired Comment User tblMailto MailtoID Voucher(2) MailtoName SendDate ReturnDate Comment Reason User Feitelijk heb ik dus geen enkel idee waar ik die ene er bij op moet tellen. mijn laatste probeersel was om in de property "default value" de volgende formule op te nemen:[code:1:c7d29f0dcc]=[qryLastRecord]![LastOfVoucherNumber][/code:1:c7d29f0dcc]Volgens mij heb ik dan altijd nog de keuze of ik van de Query een Expressie maak en er 1 bij optel, of ik mik +1 achter de formule. toch gaat het nog steeds niet goed... Quote Link naar reactie
anoniem Geplaatst: 1 maart 2004 Auteur Delen Geplaatst: 1 maart 2004 In de hoop dat ik niet inbreek in een Levendige discussie :wink: Wat je kunt doen als je niet bang bent voor een klein beetje VBA: Plaats de volgende code in het OnCurrent Event van je formulier. [code:1:b93a03cdcd] Dim cnn As ADODB.Connection Dim rst As New ADODB.Recordset Dim strSQL As String Dim lngNummer As Long If Me.txbVouchernummer Is Null Then strSQL = "SELECT max(Vouchernummer) FROM tblVouchers;" Set cnn = CurrentProject.Connection rst.Open strSQL, cnn, adOpenDynamic rst.MoveFirst lngNummer = rst.Fields(0).Value + 1 Me.txbVouchernummer = lngNummer End If [/code:1:b93a03cdcd] Suc6, Quote Link naar reactie
anoniem Geplaatst: 19 maart 2004 Auteur Delen Geplaatst: 19 maart 2004 [code:1:ea278e8d45]Option Compare Database Private Sub Form_Current() Dim cnn As ADODB.Connection Dim rst As New ADODB.Recordset Dim strSQL As String Dim lngNummer As Long If Me.Vouchernumber Is Null Then strSQL = "SELECT max(Vouchernumber) FROM tblVouchers;" Set cnn = CurrentProject.Connection rst.Open strSQL, cnn, adOpenDynamic rst.MoveFirst lngNummer = rst.Fields(0).Value + 1 Me.Vouchernumber = lngNummer End If End Sub[/code:1:ea278e8d45]Ik heb even de code opnieuw gepost want er zaten een paar spelfoutjes in, maar ik krijg een foutmelding in de IF regel en ik snap niet goed wat er mis is Quote Link naar reactie
anoniem Geplaatst: 19 maart 2004 Auteur Delen Geplaatst: 19 maart 2004 Is Null? Zal IsNull moeten zijn. Maar dat houdt in dat er geen waarde bekend is. Beter is bijvoorbeeld If ... = "". Succes Quote Link naar reactie
Aanbevolen berichten
Om een reactie te plaatsen, moet je eerst inloggen