30. januar 2004 - 16:27Der er
14 kommentarer og 1 løsning
gemmer ikke i databse ?
hej .
jeg har et en side, hvor jeg prøver at gemme noget fra et felt i en database men den gider ikke rigtigt, og melder hellere ikke fejl i koden ! :( er der nogen der kan hjælpe mig med at løsse dette ? eller se hvad jeg har lavet forkert ?
feltet hedder "x_navn" på siden, men i databasen heder den (recordet) "navn"
koden som knappen kalder ser sådan ud :
'startup code
' Open Connection to the database Set DataConn = Server.CreateObject("ADODB.Connection") DataConn.Open Application("xDb_Conn_Str")
' Open record strsql = "SELECT * FROM [OpretBooking] WHERE 0 = 1"
set rs = Server.CreateObject("ADODB.Recordset") rs.Open strsql, Dataconn, 1, 2
rs.AddNew
tmpFld = Trim(x_navn) If trim(tmpFld) & "x" = "x" Then tmpFld = Null rs("navn") = tmpFld
Er du sikker på at det er 0 der skal være lig 1? ikke id eller sådan noget... jeg taler om denne linje... strsql = "SELECT * FROM [OpretBooking] WHERE 0 = 1"
Du skal også lige huske at slutte med rs.update efter din end if:
Ja det kan det da, hvis du ikke har nogen kolonne i din database der hedder 0, så skal din strsql muligvis se sådan ud: strsql = "SELECT * FROM [OpretBooking] WHERE id = 1"
Jeg forstår stadig ikke hvor du får din "x_navn" fra... har du ikke requestet den længere oppe i din kode?
Dine betingelser stemmer heller ikke helt overens, da du glemmer at skrive end if i din første betingelse... Jeg ville nok gøre det lidt på denne måde: ... tmpFld = Trim(x_navn) If trim(tmpFld) & "x" = "x" Then tmpFld = Null rs("navn") = tmpFld end if ...
eller sådan: ... tmpFld = Trim(x_navn) If trim(tmpFld) & "x" = "x" Then tmpFld = Null rs("navn") = tmpFld
elseif BookingCheck = 0 then OpretBooking end if ...
Hvis den melder en fejl, så skriv venligst hvilken fejl den melder, det vil gøre det nemmere at rette fejlen for mig, og andre... /Hans
(Det er i øvrigt ikke en fejl med where 0=1. Det bruges, for at undgå, at læse en masse poster fra DB'en, når man åbner connectionen - typisk i forbindelse med en simpelt insert efterfølgende.)
' Open record strsql = "SELECT * FROM [OpretBooking] WHERE 0 = 1"
set rs = Server.CreateObject("ADODB.Recordset") rs.Open strsql, Dataconn, 1, 3
rs.AddNew
tmpFld = Trim(Request("x_navn")) If trim(tmpFld) & "x" = "x" Then tmpFld = Null rs("navn") = tmpFld end if
Nej det kan ikke passe... Jeg har fundet fejlen.. Den ligger mest i at man ikke skal sige hvor i databasen, som sættet skal oprettes. Det er her gjort ved at man siger "Where 0 = 1" Hvilket skal fjernes så SQLsætningen kommer til at se sådan ud: strsql = "SELECT * FROM OpretBooking"
hansdam> Det nedsætter hastigheden i selve udførelsen af querye'en i databasen. Denne skal jo nu ikke generere et recordsæt med 10.000 poster - men et tomt.
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.