Avatar billede mugs Novice
25. januar 2005 - 17:58 Der er 32 kommentarer og
3 løsninger

Hjælp til thomasjepsen's "Historik-funktion"

Jeg har downloadet thomasjepsen’s ”Historik”-funktion og implementeret den i min egen db. Men jeg får en Runtime fejl 13 ”Type Mismatch”, når jeg forsøger at:

-    Oprette en ny post
-    Redigere en eksisterende post
-    Slette en post

Og herefter lukker formularen.

Jeg er klar over, at fejlen ”Type Mismatch” normalt fremkommer, når man forsøger at sammenligne alfanumeriske felter med numeriske. Men jeg har kontrolleret alle felttyper, uden at finde nogen fejl.

Denne linie markeres når jeg debugger:

SkrivTilHistorik Me.RecordSource, PrimærNøgle, Me(PrimærNøgle), HandlingÆndring

Når markøren glider henover variablerne:

Me.RecordSource, PrimærNøgle, Me(PrimærNøgle), HandlingÆndring

vises de korrekte værdier.

Når jeg afprøver thomasjepsen’s demo fungerer den perfekt. Naturligvis har jeg lavet en fejl – Men hvor. Nu har jeg stirret mig blind på det siden kl 08:00 imorges
Avatar billede terry Ekspert
25. januar 2005 - 19:39 #1
can you send me the dB mugs, it may be a bit easier to see


eksperten@NOSPAMsanthell.dk

remove NOSPAM
Avatar billede mugs Novice
25. januar 2005 - 19:53 #2
Databasen er sendt.
Avatar billede terry Ekspert
25. januar 2005 - 19:55 #3
received
25. januar 2005 - 20:08 #4
eller til mig :o)
Avatar billede nih Novice
25. januar 2005 - 20:09 #5
du kan også lade mig kigge på den

nih(at)stofanet.dk

Niels
Avatar billede terry Ekspert
25. januar 2005 - 20:15 #6
I changed the Function declaration to receive a string in PrimærNøgleNavn. It was a long!!!

but it still isnt going to work because the function only accepts recordsets with a single table!
Avatar billede mugs Novice
25. januar 2005 - 20:20 #7
terry > OK - Foreløbig tak. Det vil jeg arbejde videre på.

thomasjepsen > Er sendt
nih > Din e-mail adresse bliver afvist. Vil du evt. maile til mugs@mail.dk, så svarer jeg på den.
25. januar 2005 - 20:21 #8
Jeg har ikke modtaget noget...?
Avatar billede terry Ekspert
25. januar 2005 - 20:24 #9
If you only need to save data from the first table then you could try altering the first parameter to the table name and then make sure that ALL fields from the first table are selected in th equery in the same order as in the table
Avatar billede nih Novice
25. januar 2005 - 20:26 #10
Jeg har modtaget en db :)
Avatar billede mugs Novice
25. januar 2005 - 20:28 #11
Sendt igen til thomasjepsen.

terry > Tak, det arbejder jeg videre på.

Jeg tror ikke jeg når ret meget længere iaften. Mine øjne er helt firkantede. Men hvis I vil se nærmere på det ved lejlighed, ville jeg blive meget glad.

Jeg vil ud at gå en tur og nyde det pragtfylde vejr og få hjernen blæst ud. - 5 grader, vindstille og nymåne.
25. januar 2005 - 20:30 #12
modtaget....
Avatar billede nih Novice
25. januar 2005 - 20:31 #13
SkrivTilHistorik Me.RecordSource, Me(PrimærNøgle), PrimærNøgle, HandlingÆndring

du skal bytte om på PrimærNøgle, Me(PrimærNøgle)

Niels
25. januar 2005 - 20:32 #14
Hvorfor har du ændret på datatypen for  PrimærNøgleNavn i funktionen? Den skal være String i stedet for Long!
Du sætter den jo selv til "FLDudlånsid"

Checker lige om det er nok....
Avatar billede nih Novice
25. januar 2005 - 20:33 #15
Og så modtager funktionen SkrivTilHistorik kun tabel navne IKKE en forespørgsel som du angiver vha me.recordsource

Niels
25. januar 2005 - 20:42 #16
ja, det faldt jeg også over....du kan ikke umiddelbart bruge en forespørgsel som postkilde til formularen.

Du kan, hvis du ændre din historik tabel til at indeholde de samme felter som din forespørgsel (hvordan skal den ellers vide hvilke felter, som skal logges?)

Samtidig skal du ændre navnet på tblHistorik til "histUdlån" og ændre funktionen til dette:

Public Function SkrivTilHistorik(Tabelnavn As String, PrimærNøgleNavn As String, PrimærNøgleVærdi As Variant, Handling As Byte)
    Dim db As Database
    Dim tdef As QueryDef
    Dim tdefHist As TableDef
    Dim n As Byte
    Dim SQLStr As String
   
    Set db = CurrentDb
    Set tdef = db.QueryDefs(Tabelnavn)
    Set tdefHist = db.TableDefs("hist" & Mid(Tabelnavn, 4))
   
    SQLStr = "INSERT INTO [hist" & Mid(Tabelnavn, 4) & "] ( "
    For n = 0 To tdef.Fields.Count - 1
        SQLStr = SQLStr & "[" & tdef.Fields(n).Name & "], "
    Next n
    SQLStr = SQLStr & "ÆndretAf, ÆndretDato, HistorikHandling ) "
   
    SQLStr = SQLStr & "Select "
    For n = 0 To tdef.Fields.Count - 1
        SQLStr = SQLStr & "[" & tdef.Fields(n).Name & "], "
    Next n
    SQLStr = SQLStr & "'" & GetUsername & "', Now(), " & Handling & " "
    SQLStr = SQLStr & "FROM [" & Tabelnavn & "] WHERE [" & PrimærNøgleNavn & "] = " & PrimærNøgleVærdi
    db.Execute SQLStr
   
End Function


Så det kræver lidt omskrivning. En gammel tommelfingerregel siger jo også, at man aldrig skal lave formularer på forespørgsler ;o)
25. januar 2005 - 20:44 #17
Som jeg også skrev i koden, så var eksemplet ikke færdigudviklet og gennemtestet. Og i hvert fald, så bør jeg nok forklare opsætningen lidt nærmere :o)
Avatar billede nih Novice
25. januar 2005 - 21:04 #18
Hvad er det for en regel med formulare og forespørgsler - den kendte jeg ikke
25. januar 2005 - 21:14 #19
Jeg har aldrig selv fulgt "reglen", men har mødt den flere gange.
Jeg tror mest, at den går på, at hvis man baserer en forespørgsel på flere tabeller, kan det være svært at gennemskue konskvenserne: låste poster, adderende joins m.m.

Men hvis man ved, hvad man gør, så er der ingen problemer.
Avatar billede nih Novice
25. januar 2005 - 21:32 #20
Jeg har mest hørt om den modsatte regel
Det er nemmere at ændre i tablestrukturer hvis formularer og rapporter bygger på forespørgsler - så skal man nemlig kun ændre feltnavne i forespørgslerne ikke i alle formulare og rapporter
25. januar 2005 - 21:35 #21
ja, det er klart, at hvis du bare laver en simpel forespørgsel med de samme flter som tabellen, så har det samme effekt som hvis man tog selve tabellen. Men når man sætter flere tabeller sammen (som Mugs har gjort) så kan det gå galt.

Men somjeg skrev før, så er det jo ikke noget problem, hvis man bare ved hvad man gør :o)
Avatar billede mugs Novice
25. januar 2005 - 22:16 #22
Efter en længere spadseretur ser jeg, at forslagene er flydt i en lind strøm. Efterfølgende kan jeg godt se, at jeg ikke har haft hele hjernen med, da jeg forsøgte mig ud i denne funktion.

Jeg vil nærlæse forslagene imorgen.

Faktisk var det en lang spadseretur. Helt ned i byen til BUCH's Vinstue, hvor man for ussel mammon kan få skjænket et glas med en ½ L godt og køligt fadøl fra Sophus Fuglsang's udmærkede bryggeri.
25. januar 2005 - 22:21 #23
haha, Mugs. Du er en rigtig "livsnyder" (ikke livssnyder). Det er sgu dejligt at høre :o)
Avatar billede mugs Novice
25. januar 2005 - 22:27 #24
Når man ikke kan finde ud af Access, så man jo foretage sig noget andet. Det var egentlig meningen, at jeg ville læse iaften, er igang med en 700 siders mursten af Nelson DeMille. Den tegner godt.
Avatar billede nih Novice
25. januar 2005 - 22:57 #25
Så ville jeg have holdt mig til fuglekvidder :)
Avatar billede mugs Novice
25. januar 2005 - 23:01 #26
nih - Blot fordi man kommer ca 30 Km længere nord på, er der jo ingen grund til at lægge litteraturen på hylden og blive barbarisk. Hver ting til sin tid ;o)
Avatar billede nih Novice
25. januar 2005 - 23:05 #27
Det der med at kunne more sig med god bog og en kop te - det har jeg aldrig helt forstået :)

Det skulle da lige være en bog fra Wrox og et par kander sooort kaffe
Avatar billede mugs Novice
25. januar 2005 - 23:14 #28
Wrox?

Det minder mig om historietimerne i skolen:

Da Danmark i fortiden blev befolket fra Syd, kom hærskaren af urmennesker kom op i Sønderjylland, så de et skilt hvor på der var skrevet "Haderslev". De kloge, der kunne læse stoppede op, og bosatte sig her. De mindre kloge, der dårligt kunne læse, gik videre og kom lidt længere nord på til Frededricia. Så mødte de et et skilt med 2 pile. Een pil pegede pegede til højre og der var skrevet "Sjælland". Den anden pil pegede videre mod Nord med teksten "Jylland". De dumme der ikke kunne læse drejede til højre.
25. januar 2005 - 23:17 #29
Jeg mener stadig, at du skulle have holdt dig til en 1/4 øl. Du vrøvler!

Wrox er et forlag, som udgiver nogle af de bedste programmeringbøger...
Avatar billede mugs Novice
25. januar 2005 - 23:19 #30
Godnat ;o)
25. januar 2005 - 23:21 #31
'nat :o)
Avatar billede nih Novice
25. januar 2005 - 23:24 #32
Ja, Moin
Avatar billede terry Ekspert
26. januar 2005 - 08:21 #33
Moin and thanks for the points mugs :o)
Avatar billede mugs Novice
26. januar 2005 - 10:32 #34
Jeg har ændret db efter Jeres anvisninger. thomasjepsen's kode er lagt ind, og så kører det hele perfekt (Da jeg havde ændret indekseringen til Ja-dubletter tillades) ;o)
26. januar 2005 - 11:12 #35
Der kan du se....det hjalp at få sovet branderten ud, haha :o)
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