Avatar billede neoo Nybegynder
30. januar 2004 - 16:27 Der 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



  if BookingCheck = 0 then
    OpretBooking   
  end if
 
%>
Avatar billede hansdam Nybegynder
30. januar 2004 - 17:04 #1
Prøv:

...
rs.Open strsql, Dataconn, 1, 3
...

desuden.. Skal du ikke have requestet din x_navn? Hvis nu det er et form felt
tmpFld = Trim(request("x_navn"))
/Hans
Avatar billede hansdam Nybegynder
30. januar 2004 - 17:18 #2
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:

...
  if BookingCheck = 0 then
    OpretBooking   
  end if

rs.update
%>

/Hans
Avatar billede neoo Nybegynder
30. januar 2004 - 17:40 #3
ok, jeg trore vi er tæt på, for nu begynder den vist at snakke med databasen, den skrive en tom felt hvergang jeg trykke på opret.

koden ser sådan ud nu.


        ' 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


if BookingCheck = 0 then
    OpretBooking   
  end if

rs.update
 
%>




men er det denne linje der er noget galt med:
strsql = "SELECT * FROM [OpretBooking] WHERE 0 = 1"

min primær nøgle i dette tabel hedder id, kan det hjælpe ?
Avatar billede hansdam Nybegynder
30. januar 2004 - 17:52 #4
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
Avatar billede hansdam Nybegynder
30. januar 2004 - 18:04 #5
Den sidste af de to betingelses sætninger skal du nok ikke bruge.. den er dårlig til dette formål
Avatar billede neoo Nybegynder
30. januar 2004 - 18:36 #6
jeg kan ikke få det til at virke :( , jeg har lavet de ændringer du sagde jeg skulle.

Men den melder hellere ikke nogen fejl, den skriver bare tomt i databasen.

vil det ikke være nemmere, hvis jeg smider koden med databasen på et link, så kan det måske være mere overskuelligt. ?
Avatar billede hansdam Nybegynder
30. januar 2004 - 18:39 #7
Jo tak, det ville det.. Du kan også bare sende det til min mail: Hans.dam@mail.dk
Det må du selv bestemme...
Avatar billede neoo Nybegynder
30. januar 2004 - 18:51 #8
jeg har sendt en mail til dig. :)
Avatar billede hansdam Nybegynder
30. januar 2004 - 18:52 #9
okay :-D Kigger lige på det
Avatar billede neoo Nybegynder
30. januar 2004 - 18:53 #10
ok :)
Avatar billede the_bma_man Nybegynder
01. februar 2004 - 23:37 #11
Dette burde kunne gøre det.

(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


if BookingCheck = 0 then
    OpretBooking   
  end if

rs.update
Avatar billede hansdam Nybegynder
02. februar 2004 - 11:27 #12
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"

/Hans
Avatar billede hansdam Nybegynder
02. februar 2004 - 11:32 #13
Oops... Lille fejl... Havde ikke lige læst hele dit svar. Det må du undskylde The_bma_man

Men jeg mener stadig at det skal væk altså "WHERE 0 = 1"
Hvis det var fordi det skulle gå lidt hurtigere kunne man fx tilføje
response.buffer = true

Jeg undskylder lige igen for min manglende tolmodighed til at læse hele svaret.
Avatar billede the_bma_man Nybegynder
11. marts 2004 - 11:07 #14
Men øhh neoo.
Du kunne ikke bruge svaret?

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.
Avatar billede neoo Nybegynder
19. juni 2006 - 14:27 #15
lukker: )
Avatar billede Ny bruger Nybegynder

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.

Loading billede Opret Preview
Kategori
Kurser inden for grundlæggende programmering

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester