Avatar billede kimsand Nybegynder
02. april 2014 - 13:28 Der 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.

min sSql ser sådan ud:

"INSERT INTO DT_borger (cprnr, aktiv) Values ('" & cprnr.Value & "', TRUE)"

og i mit debud vindue bliver det til eks.

"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 ?
Avatar billede kimsand Nybegynder
02. april 2014 - 13:30 #1
og det er ikke det andet felt, som er et boolean, for det har jeg prøvet at tage ud, og jeg får stadig fejlen.
Avatar billede MSchlamovitz Mester
02. april 2014 - 14:06 #2
Det ser umiddelbart rigtigt ud,det du gør. Det burde virke, men:

Din inputmaske bør du ikke definere på tabelniveau - Læg inputmasken som en egenskab på tekstboksen i formularen.

Hvis det ikke virker, så:

Prøv at sætte antal tegn til 11 eller mere i tabellen.
Avatar billede kimsand Nybegynder
02. april 2014 - 14:47 #3
Hej MSchlamovitz. Tak for din respons...

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 ?
Avatar billede kimsand Nybegynder
02. april 2014 - 14:53 #4
Jeg har nu fjernet inputmaske på tabelniveauet, men det er samme problem.
Avatar billede mugs Novice
02. april 2014 - 14:55 #5
Når tabellens inputmaske er  000000-0000 forventes 11 tegn, når du så indsætter 10 tegn vil du få en fejl.

Uenig i, at man ikke bør orette inputmasker i tabellen.
Avatar billede kimsand Nybegynder
02. april 2014 - 14:57 #6
Hele min kode ser sådan her ud.

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 & "'"
Avatar billede kimsand Nybegynder
02. april 2014 - 15:01 #7
Hej mugs, tak for dit kommentar.

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.
Avatar billede kimsand Nybegynder
02. april 2014 - 15:04 #8
Har det noget at gøre med at jeg har en string type i koden, og en begrænset tekst type på 10 bogstaver i tabellen ?
Avatar billede terry Ekspert
02. april 2014 - 15:07 #9
'8374839292' Only 10 characters here
Avatar billede terry Ekspert
02. april 2014 - 15:09 #10
Input mask should have no influence on SQL INSERT
Avatar billede kimsand Nybegynder
02. april 2014 - 15:11 #11
Hey terry, no exactly thats what i thought, as inputmask only is about representation of data and not content.

the error also says validationrules... and i have no validation rules whatsoever not in the textbox, neither in the field in the table.
Avatar billede kimsand Nybegynder
02. april 2014 - 15:14 #12
hmmm some of the fields including the cprnr, in the table are obligatory, could that be the problem ?
Avatar billede mugs Novice
02. april 2014 - 15:41 #13
inputmask only is about representation of data

NEJ - Inputmasken er den måde, hvorpå du SKAL indtaste data i tabellen og bliver lagret på din HD

Præsentationen er kun det dine øjne ser på skærmen.

Inputmaske og formatet behøver således ikke at være den samme.
Avatar billede terry Ekspert
02. april 2014 - 15:49 #14
hmmm some of the fields including the cprnr, in the table are obligatory, could that be the problem

= YES

your welcome to send dB and I'll take a look

ekspertenATsanthell.dk
AT = @
Avatar billede terry Ekspert
02. april 2014 - 15:49 #15
but you can give them a default value
Avatar billede kimsand Nybegynder
02. april 2014 - 16:51 #16
could that default value be " "
Avatar billede terry Ekspert
02. april 2014 - 19:06 #17
If there isn't a requirement to have enter a value then why not remove the required from the dB?
Avatar billede terry Ekspert
02. april 2014 - 19:32 #18
Required = No
Allow zero length = Yes

These are normally the default.
Avatar billede kimsand Nybegynder
02. april 2014 - 20:06 #19
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.
Avatar billede kimsand Nybegynder
02. april 2014 - 20:10 #20
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.
Avatar billede terry Ekspert
02. april 2014 - 20:47 #21
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.
Avatar billede kimsand Nybegynder
02. april 2014 - 21:28 #22
hmm... yeah that sounds like a better solution...... ty, ill try it out tomorrow....
Avatar billede terry Ekspert
02. april 2014 - 22:40 #23
TY too
drop a comment if you have problems ..
Avatar billede kimsand Nybegynder
03. april 2014 - 08:01 #24
TY Terry, i just removed all the obligatory settings and it worked.

Well another lesson learned, getting my own share of houserules now :)

But thats a strange error message as it has nothing to do with validation.

I set the inputmask back to 000000-0000;;_ and it all worked like a charm.
Avatar billede terry Ekspert
03. april 2014 - 17:22 #25
"Microsoft office access kan ikke tilføje alle posgterne i tilføjelsesforespørgslen. blablablabla...... 1 poster pga. fejl i valideringsregler ..

valideringsregler isn't that validation?

Anyway, its working now
Avatar billede kimsand Nybegynder
03. april 2014 - 19:33 #26
yeah, but obligatory settings, and no null is that validation rules....?

There is a setting which is specifically for validation rules, just 4-5 rows further up
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