02. april 2014 - 13:28Der er
26 kommentarer og 1 løsning
Insert en streng i en tabel, med en værdi fra en tekstboks. (cprnummer)
Jeg er i gang med at kode en funktionalitet hvor jeg kan indtaste et cpr nummer, trykke på en knap og så finder koden ud af om cprnummeret eksisterer i forvejen og er aktivt, og hvis det ikke er bliver det oprettet. Så kaldes en form med cprnummeret som filter på et recordset hvor man så kan indtaste de resterende data i tabellen.
"INSERT INTO DT_borger (cprnr, aktiv) Values ('8374839292', TRUE)"
cprnr.Value en tekstboks, cprnr i tabellen er en streng defineret fast med 10 karakterer, samt en inputmaske der hedder 000000-0000;;_ altså den lagrer data uden - . Dette er tekstboksen også defineret som.
Når jeg kører min sSql, får jeg en
"Microsoft office access kan ikke tilføje alle posgterne i tilføjelsesforespørgslen. blablablabla...... 1 poster pga. fejl i valideringsregler..... blablablabla."
Det virker som om jeg overfører en forkert værdi til tabellen, men jeg kan jo ikke definere tekstboksen og feltet i tabellen mere ens ?
Jeg vil lige starte med at sige at jeg er ny ud i det her access vba, så der er en masse "houserules" som jeg ikke kender :)
Jeg havde faktisk defineret feltet med 11 tegn i tabellen, men det var samme problem. Så troede jeg at der kunne være et problem når der reelt kun blev gemt 10 tegn i feltet, at der kunne være noget "støj" i det sidste tegn som kunne spille ind.
Hvorfor bør jeg ikke definere inputmaske på tabelniveau ?, jeg var af den overbevisning at hvis jeg gør det, når jeg så laver forms ud fra en tabel, så er jeg hjulpet med at inputmasken kommer med i tekstfeltet automatisk. Er der nogle falgruber ved at gøre det sådan ?
If DCount("IDborger", "DT_borger", "cprnr = '" & cprnr.Value & "'" & " and aktiv = True") <> 0 Then 'Check om cprnummer eksisterer, og om borger er aktiv 'kald FM_tilbudsbooking med filtreret med cprnummer Else sSql = "INSERT INTO DT_borger (cprnr, aktiv) Values ('" & cprnr.Value & "', TRUE)" 'så opret cprnummer i borgerkalender og kald FM_tilbudsbooking med filtreret med cprnummer" DoCmd.RunSQL sSql End If
Først checker jeg om der er et cprnummer der matcher, og om aktiv er sat... DET VIRKER, dvs, jeg kan godt sammenligne feltet "cprnr = '" & cprnr.Value & "'"
Jeg oplever at jeg IKKE skriver 11 tegn ind. jeg skriver jo rent faktisk kun 10, og så er feltet formatteret med en bindestreg efter de første 6, men det har ingen indflydelse på det data der ligger både i feltet i tabellen, og i tekst feltet.
Hvis du ser på dette "INSERT INTO DT_borger (cprnr, aktiv) Values ('8374839292', TRUE)" som jeg ser i Debug vinduet når jeg stepper gennem koden, så er der kun 10 tegn i tekstfeltet, og det er der også kun i de poster der er i tabellen.
I would really like for the future users of the software to not be able to leave a registration without entering some vital data, which is a big problem today.
the need to give the fields the " " value comes from this thought.
I have a small form with 1 textbox, where you can enter a cpr number. There is also a button, and when you press that button there is a DCount in the table and if it turns up 0 then i wanna insert the cpr number in the table, and call the bigger form with all the other fields with the cpr nr as filter.
That makes it possible for the user to enter the rest of the data, and a person has been registered in the DB.
We have to keep it very simple and the process extremely guided.
But that would still let them not enter anything in that field as it already contains a value " "
I would Required = No Allow zero length = Yes
and then in the form which opens after entering a new CPR number in the before update event test if anything has been entered and if not cancel the update and show message that data is required in that field.
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.