18. januar 2002 - 21:19Der er
7 kommentarer og 2 løsninger
Problemer med søge efter en eksisterende post
Jeg har en formular, hvor det skal være muligt at indtaste et nummer og skal derefter checke om nummeret findes og hvis det gør, så skal den gå til den angivne post ellers skal den oprette en ny records.
Først skal man vælge et program (programnummerID) og derefter skal man vælge et optagelsesnummer og det er her det går galt, hvis man vælger et nummer som allerede findes i tabellen.
Min VB-kode ser sådan ud: Private Sub Optagelsesnummer_AfterUpdate() XProgramID = ProgramidX XOptagelsesNR = Optagelsesnummer XOptagelsesID = FktProgramID() * 10 + FktOptagelsesNR() If XOptagelsesID = OptagelsesID Then DoCmd.GoToRecord acDataForm, \"OptagelsesID\", acGoTo, 4 Else DoCmd.DoMenuItem acFormBar, acEditMenu, acUndo, , acMenuVer70 Me.ProgramnummerID = FktProgramID() Me.OptagelsesID = (Me.ProgramnummerID * 10) + FktOptagelsesNR() Me.Optagelsesnummer = FktOptagelsesNR() End If End Sub
Brug af AI afslører de svagheder, virksomheder allerede har opbygget gennem års cloud-transformation, nye SaaS-løsninger og fragmenterede sikkerhedssystemer.
Jeg kan ikke få det til at virke - den kommer ud og siger at det vil give dublerende data i indexes.
Min nuværende kode ser sådan ud: If XOptagelsesID = DLookup(\"OptagelsesID\", \"[T_Optagelsesnummer]\", \"OptagelsesID=\" & FktOptagelsesID()) Then \'her skal den gå til den givne række i tabellen og bruge. If DCount(\"*\", \"T_Optagelsesnummer\", \"[OptagelsesID] >0\") Then Me!Optagelsesnummer.SetFocus DoCmd.FindRecord Me!Optagelsesnummer End If
Når du indsætter koden i feltets AfterUpdate er tabellen allerede opdateret, d.v.s. at fejlen kommer fordi der allerede er en post med en tilsvarende værdi i tabellens indekserede felt (dublerede data i index).
Prøv som udgangspunkt at flytte koden til BeforeUpdate. Men jeg er så bange for, at FindRecord ikke fungerer, fordi den post du søger jo så ikke findes i tabellen.
Jeg har ikke nogen løsning i øjeblikket, men vil arbejde videre på sagen.
Ja - Jeg vil gerne se på det, men ikke love en løsning.
Der er noget selvmodsigende i spørgsmålet, idet du prøver at oprette en post i et indekseret felt, hvor værdien allerede eksisterer, her stopper koden idet du skal få en fejl.
Derefter vil du søge efter en post, hvor du søger efter feltet i tabellen idet du refererer til Me!Feltnavn. det er selvmodsigende idet feltet jo ikke indeholder en værdi, fordi det ikke er opretttet.
Det er jeg faktisk godt klar over, men jeg kunne ikke finde på en bedre måde at definere det på og det er faktisk mit problem - ved ikke om det kan laves på en helt anden måde en på den måde som jeg er startet på, men det tænker jeg over og har gjort det i mange dage uden at komme til løsningen :(
Har du en e-mail adresse, ellers kan du lige skrive til mig på webmaster@lws.dk
Jeg fandt ud af det med denne kode og formularen har ingen tabel eller forespørgsel som grundlag.
\' ingen advarsler ønskes DoCmd.SetWarnings False \' sætter funktionen FktOptagelsesID() til en varibel XOptagelsesID = Me.ProgramidX * 10 + Optagelsesnr \'Checker om der er et eksisterne OptagelsesID og hvis ikke så opret den i tabellen T_OptagelsesID If IsNull(DLookup(\"[OptagelsesID]\", \"[T_Optagelsesnummer]\", \"OptagelsesID = FktOptagelsesID()\")) Then DoCmd.RunSQL \"Insert into T_Optagelsesnummer (OptagelsesID, ProgramnummerID, Optagelsesnummer)\" & _ \"SELECT FktOptagelsesID(), ProgramidX, Optagelsesnr\" Me.OptagelsesID = FktOptagelsesID() Else Me.OptagelsesID = DLookup(\"[OptagelsesID]\", \"[T_Optagelsesnummer]\", \"OptagelsesID=\" & FktOptagelsesID()) End If \' Sætter datoen i som en oplysning Me.Dato = DLookup(\"[OptagelsesDato]\", \"[T_programnummer]\", \"ProgramnummerID=\" & ProgramidX) DoCmd.SetWarnings True
mugs får 2/3 af pointene for hjælpen, selvom jeg ikke kunne bruge det som han sendte til mig.
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.