Just nu i M3-nätverket
Gå till innehåll

INSERT INTO går inte som jag vill


ottarpslisa

Rekommendera Poster

Hej igen...

Jag har en tabell VerkligVecka där jag ska skapa en post med hjälp av ett formulär. Jag använder frågan:

 

INSERT INTO VerkligVecka(anställd, startDatum, verkligVecka, schemaVecka)

VALUES (1, #2009-08-16#, 34, 1);

 

och det fungerar jättebra varje gång, jag kör den SQL frågan manuellt men när jag kör funktionen SkapaVV() som i stort sett bara skapar frågan och kör den så blir resultatet lite annorlunda...

 

När jag kör frågan manuellt får jag

1 8/16/09 34 1

1 8/23/09 35 2

1 8/30/09 36 3

precis som det ska vara men...

 

när jag kör frågan via formuläret får jag

1 8/16/09 0 1

1 8/23/09 35 2

1 8/23/09 35 1

 

Felet borde trots allt ligga i denna funktion i formuläret eftersom jag har skalat bort allt annat och då blir det samma fel. Koden är inte vacker men ser ut såhär:

            
fråga = "INSERT INTO VerkligVecka(anställd, startDatum, verkligVecka, schemaVecka)"
fråga = fråga & "VALUES (" & iAnställd & ", " & "#" & dDatum & "#" & ", " & bVerkligVecka & ", " & bSchemavecka & ");"
DoCmd.RunSQL (fråga)

 

Är det någon klokaren än jag som kan förstå vad som händer?

 

Lisa

 

 

Länk till kommentar
Dela på andra webbplatser

Det känns som att variabeln bVerkligVecka inte är riktigt satt första gången du gör insert. Har du en metod med inputvariabler som du kör flera gånger, eller hur har du skrivit koden runt ikring?

Om du sätter en breakpoint i metoden så ser du lätt om bVerkligVecka innehåller rätt värde.

 

Länk till kommentar
Dela på andra webbplatser

bVerkligVecka sätts direkt efter kontrollen av att rätt data matats in och sen förändras den inte. Snurrigt är det iallafall, har du fler bra förslag på vad jag ska leta efter blir jag jätteglad, känns som att man har testat allt just nu men någonstans är ju felet så tydligen har jag inte det.

 

bVerkligVecka = CByte(DatePart("ww", (dDatum + 1))) 

svar = tabortgammalvv() 
svar = skapaVV()
svar = skapaVerkligaDagar()

Function tabortgammalvv()        
'ta bort veckans gamla dagar
fråga = "DELETE VerkligDag.* FROM VerkligDag 
WHERE VerkligDag.verkligVecka= " & bVerkligVecka & ";"
               DoCmd.RunSQL (fråga)
'ta bort veckans gamla vecka
fråga = "DELETE VerkligVecka.* FROM VerkligVecka WHERE VerkligVecka.verkligVecka= " & bVerkligVecka & ";"
               DoCmd.RunSQL (fråga)

Function skapaVV()
fråga = "INSERT INTO VerkligVecka(anställd, startDatum, verkligVecka, schemaVecka)"
fråga = fråga & "VALUES (" & iAnställd & ", " & "#" & dDatum & "#" & ", " & bVerkligVecka & ", " & bSchemavecka & ");"
               DoCmd.RunSQL (fråga)

 

Länk till kommentar
Dela på andra webbplatser

Jag sitter fortfarande kvar och försöker hitta felet i detta.

 

Jag har en fråga INSERT INTO som skapar ett objekt i tabellen VerkligVecka.

 

Om jag kör formuläret får jag detta resultat, jag har inaktiverat övrig kod så detta är resultatet av bara funktionen som ska skapa objektet i VerkligVecka

 

Detta händer när jag lägger till (VerkligVecka.verkligvecka)[log]tillagt 34

blir 34, 0

borde bli 34

 

tillagt 35

blir 0, 35, 35

borde bli 34, 35

 

tillagt 36

blir 0, 35, 36, 36

borde bli 34, 35, 36

 

tillagt 37

blir 0, 35, 36, 37, 37, 37

borde bli 34, 35, 36, 37

 

 

tillagt 34(2)

blir 34, 0, 34, 35, 36, 37, 37

borde bli 34, 35, 36, 37, 34

 

tillagt 35(2)

blir 34, 0, 35, 35, 36, 37, 37

borde bli 34, 35, 36, 37, 34, 35

 

tillagt 36(2)

blir 34, 0, 35, 35, 36, 36, 37, 37

borde bli 34, 35, 36, 37, 34, 35, 36

 

tillagt 37(2)

blir 34, 0, 35, 35, 36, 36, 37, 37, 37, 37

borde bli 34, 35, 36, 37, 34, 35, 36, 37[/log]

Är det någon som ser något sammanhang i detta och var tar vecka 34 vägen? inte så troligt att den kommer tillbaka med samma data senare.

 

//Lisa

 

[inlägget ändrat 2009-08-18 14:11:06 av ottarpslisa]

[inlägget ändrat 2009-08-18 14:17:01 av ottarpslisa]

 

LOG-taggar tillagt av moderator

 

[inlägget ändrat 2009-08-19 22:51:15 av Cluster]

Länk till kommentar
Dela på andra webbplatser

Har du satt breakpoints och verifierat så att variablerna verkligen innehåller den data som du förväntar dig. Då ser du också när koden körs, för det ser ut som att koden körs en gång för mycket.

 

Länk till kommentar
Dela på andra webbplatser

jo jag har satt breakpoints och den fråga som skapas (och körs) innehåller precis det den ska (varje gång). Om koden körs flera gånger borde ju resultatet bli rätt men det dubbla, nu försvinner ju ett objekt.

 

Jag funderar på om det kan vara så att det är någonting som händer eftersom koden ligger i ett underformulär som visar de objekt i VerkligDag som har VerkligDag.verkligVecka samma som VerkligVecka.verkligVecka, men det är inte så lätt att se och kontrollera.

 

Jippie!

Detta händer när jag uppdaterar eller stänger formuläret. Om jag kommenterar bort uppdateringen av formuläret och inte stänger det innan jag tittar i tabellen så skapas allt helt rätt! Det var säkert därför det var ett så konstigt mönster av skapad information också.

 

Nu har jag alltså hittat felet (inte illa för en och en halv dags arbete) men vad i hela friden ska jag göra åt det?

 

//Lisa

 

Länk till kommentar
Dela på andra webbplatser

Visar du samma poster i formuläret som du håller på att arbeta med mha kod? I så fall ska du nog se till att spara alla ändringar i formuläret innan koden kör och sedan göra refresh på datan när den är klar.

 

Länk till kommentar
Dela på andra webbplatser

Nja inte riktigt så, det var då jag fick det konstiga felet

men om jag löser det på detta sättet:

 

 
DoCmd.GoToRecord , , acNewRec 'skapa ny post
'fyll den med information
anställningsnummer = iAnställd
[Forms]![schemaläggning]![schemaläggningVerkligUnder]![startDatum] = dDatum
[Forms]![schemaläggning]![schemaläggningVerkligUnder]![verkligVecka] = bVerkligVecka
[Forms]![schemaläggning]![schemaläggningVerkligUnder]![schemavecka] = bSchemavecka

 

Och sen uppdaterar formuläret så fungerar det klockrent, det är inte vackert för fem öre men det fungerar och efter att ha samma problem i huvudet hela veckan (jag jobbar tack och lov halvtid) så nöjer jag mej gott och väl med det.

 

Tusen tack för all hjälp! även om jag själv löste det tillslut så drev det felsökandet framåt och jag är ju faktiskt rätt glad som klarade det :)

 

Länk till kommentar
Dela på andra webbplatser

Arkiverat

Det här ämnet är nu arkiverat och är stängt för ytterligare svar.

×
×
  • Skapa nytt...