10. januar 2006 - 14:17Der er
20 kommentarer og 1 løsning
Insert into uden error
Hej med jer
Jeg har lavet noget i stil med: Private Sub SubSystemName_Change() Dim strSQL As String strSQL = "INSERT INTO tblDate (ErrorNumb, Happening, MyDateTime) VALUES (" & Me.ErrorID & ", 1, #" & Date & "#)" Debug.Print strSQL CurrentDb.Execute strSQL End Sub
Mit problem er at jeg ikke kan se at den opretter en ny post i tblDate som den skal. Faktisk så kommer den ikke engang med en fejlmelding. Hvilket vil sige at det virker som om den opretter en post ud i det blå.
Anyone?
Ud over de 3 kolonner (ErrorNumb, Happening, MyDateTime), har jeg en fjerde nøgle kolonne som hedder DatesID. Det er en autonummereringskolonne. Skulle den ikke udfylde sig selv automatisk? Det havde jeg fået af vide. Kan det være problemet?
since date is not part of the string it should be incased in ## . Thats what I been told anyways. And I cant use default value for Now(), since it would break up the rest of the functions I have running on this table.
But what you are saying is that basicly my function does look correct?
Okay... så jeg har fjernet havelågerne og det ser nu således ud. Private Sub SubSystemName_Change() Dim strSQL As String strSQL = "INSERT INTO tblDate (ErrorNumb, Happening, MyDateTime) VALUES (" & Me.ErrorID & ", 1, Date())" Debug.Print strSQL CurrentDb.Execute strSQL End Sub
Men resultatet er det samme... At jeg hverken får en fejl, eller en oprettet post i tabellen. Det giver simpelthen ikke mening for mig. Burde funktionen ikke fejle, hvis den IKKE kunne lægge data i tabellen? For jeg kan jo se at der ikke ligger nogen nye data i tblDate. Mangler jeg en write/submit funktion?
docmd.runsql strSQL virkede meget bedre. Nu prøver den i det mindste at skrive til tblDate.
Nu får jeg bare følgende fejlmeddelelse: Microsoft Access can't append all the records in the append query. Microsoft Access set 0 field(s) to Null due to type conversion failure, and it didnt set 1 record(s) due to key violations, 0 record(s) due to lock violations, and 0 record(s) due til validation rule valiations. Do you want to run the action query anyways? YES-NO-HELP....
Dú har angivet en nøgle på en eller flere af felterne i tabellen tblDate, og du forsøger at opdatere med et tal i nøglefeltet, som der allerede findes i tabellen. Derfor får du en fejl. Du bør derfor lige vurdere dine nøgler igen.
Jeg har ingen konfliktende nøgler. Følgende er kolonnerne i tblDate DatesID - Unik tæller. ErrorNumb - Er nøgle til min hoved tabel (tblRecords). Happening - Er opslag til tblHappening MyDateTime - dato felt.
Eftersom DatesID bare er en tæller... Intet andet, så ligger problemet ikke her. ErrorNumb er en 1 til mange relation, hvor der kan være en post i tblRecords til mange poster i tblDate. Ergo kan jeg indsætte lige så mange ens tal i denne post, så længe der er en tilsvarende post i tblRecords. Happening slår op i tblHappening og vælger en hændelse. Happening er et tal som relatere til et unikt tal i tblHappening. Det er en mange til en relation. MyDateTime er ikke en nøgle. Det underlige er jo at jeg ikke gør noget i scriptet, som jeg ikke kan gøre manuelt.. hvilket er den metode som jeg hele tiden har brugt.
Nå men... det kunne også bare være det er et tegn på at jeg skulle forsætter med den manuelle metode. Det var såmen også kun for at lette på den manuelle arbejdsgang en lille smule. Smid et svar herinde. Så deler jeg pointene mellem jer to.. (sjap og terry)
Men fejlmeddelelsen siger jo at der er en nøglekonflikt, så der må være en et eller andet sted.
Prøv at åbne tabellen i design-mode og tag felterne et af gangen (det er nok kun ErrorNumb eller Happening), og se om der nederst ud for "Indekseret" står f.eks. "Ja - Ingen dubletter".
Det har jeg gjort. Og jeg har allerede indtastet over 500 poster i tabellen, hvor der er masser af eksempler på at der er dubletter i begge kolonner. Det er derfor det ikke giver mening.
Jeg har indsat scriptet på en main form, hvor jeg har en subform til tblDate. Det vil sige at tblDate er aktiveret når jeg forsøger at køre scriptet. Kan det havde noget med det at gøre? At tabellen simpelhen er låst? Fordi den er åben som en subform?
Og jeg har lige dobbelt tjekket igen for nøglekonflikter. Det eneste jeg har der er "Ja - Ingen dubletter" er min unikke key som hedder DatesID og som bare er en standard stigende autonummerering.
Jeg tror jeg har fået lokaliseret fejlen til Happening. Problemet med Happening er at det er en Dropdown menu, hvor jeg har en række valgmuligheder i. De valgmuligheder hentes fra tblHappening som består af HappeningID og HappeningText. Det er HappeningID som er en unik key, som er bindeledet mellem tblDate og tblHappening. Altså er tal. Men fordi Happening 1 som er lig med "recieved" og flere ordre i tblDate kan være recieved, så burde der også være mulighed for at sætte et 1 tal ind for at binde tblDate og tblHappening sammen. Det er der også ifølge mit database setup.
Men jeg forsøgte lige, for at se om jeg kunne ændre fejlbeskeden som jeg beskrev ovenfor, at ændre 1 tallet til en tekst. Og nu får jeg istedet en type conversion error og ingen key violations. Ergo må det være Happening der er problemet. Så forstår jeg bare ikke hvorfor jeg ikke kan få lov til at indsætte det 1 tal, når der er et hav af 1 taller i tblDate i forvejen.
Rune > Jeg ser gerne nærmere på problemet, hvis det altså er muligt for dig at sende den til mig. Evt. kan du jo nøjes med at sende den del af databasen, der skal til for at kunne se problemet.
Jeg har fået fat i databasen (videresendte den til en adresse med mindre skrap kontrol).
Men jeg kan ikke lige se problemet. Når jeg vælger et punkt i combo-boksen "Choose System Name", så bliver jeg gjort opmærksom på at jeg er ved at tilføje 1 række, og at jeg ikke kan fortryde det - og det er vel lige det, du er ude efter. Det fungerer fint her.
Og du fik det svar uden at skulle rette i noget overhovedet? Meget underligt. For jeg får rigtigt nok også boksen op om at jeg er ved at tilføje en post.. men umiddelbart derefter får jeg så også den fejlbesked der har været diskussionen her de sidste par kommentarer. Kan der være forskel på om jeg bruger Access 2003 kontra den version du bruger?
Det ved jeg ikke - men jeg har brugt version 2000. Det er selvfølgelig lidt mystisk. Jeg ved ikke om programmet gør noget ved databasen (så det virker), men jeg kan da godt lige returnere den - så kan du se om det gør nogen forskel.
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.