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
I dette særtema ser vi på, hvordan cloud og AI bliver fundamentet for virksomhedernes digitale forretning, og hvordan de nye muligheder for automatisering og forretningsværdi kan udnyttes uden at miste overblik, sikkerhed og menneskelig kontrol.
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.