Avatar billede kokholm Nybegynder
06. marts 2004 - 18:00 Der er 68 kommentarer og
1 løsning

ASP / XML - haj søges !

Hej,

Jeg søger en "asp/xml-haj" som vil hjælpe mig med at lave en asp side som henter nogle adressedata i XML fra nettet og som skal sættes ind i nogen formularfelter på en asp-side for efterfølgende med en knap at kunne indsættes / opdateres i en access database.
Avatar billede nute Nybegynder
07. marts 2004 - 00:26 #1
kan du specificere lidt bedre ?
Avatar billede kokholm Nybegynder
07. marts 2004 - 12:28 #2
Jo det vil jeg gerne prøve på...

Ser du - Jeg behøver en asp side hvor jeg kan indtaste et tlfnr i et formularfelt.
Herefter skal jeg kunne trykke "Søg" hvorefter der først kontrolleres i en access database om tlfnr. eksisterer

- eksisterer tlfnr skal den blot svare tilbage på siden at nummeret findes

- hvis ikke skal den gå på nettet og lave en søgning og hive resultatet ud af et xml svar og indsætte det på asp sidens formularfelter navn - adresse - osv.

Derefter skal jeg selv kunne udfylde et par ekstra formularfelter manuelt og slutteligt trykke på en "Indsæt i database" knap.

Jeg har erhvervet mig adgang til "oplysningen" hvor jeg kan få svarene tilbage i xml.

Håber jeg har forklaret mig lidt bedre denne gang, ellers spørg løs...
Avatar billede nute Nybegynder
07. marts 2004 - 12:38 #3
og hvad er det lige du vil have hjælp til ? der er 3 "elementer" i dette:

- søgning i database. (Dette kan du læse om her: http://html.dk/tutorials/asp/lektion19.asp)
- hænte et xml dokument fra en anden service, trække oplysninger ud fra xml dokumentet og smide de ind i et formular
- indsæt noget i en database. (Dette kan du læse om her: http://html.dk/tutorials/asp/lektion20.asp )

hvordan ser xml'en ud som du får i retur ? hvordan kalder du din "oplysnings siden" ? skal der sendes nogle parametre over til den ?

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 14:40 #4
øh - hvis jeg nu siger til lidt af det hele ? - så løber du ikke skrigende bort vel ?

Jeg kan udemærket designe siden med formularfelter og jeg kan også finde ud af at connecte til access databasen.

Jeg er i tvivl om hvordan jeg skal lave søgningen i databasen efter det eksisterende nr. i databasen og det videre forløb.

For at hente xml oplysningerne frem skal jeg kalde en bestemt adresse med min adgangskode http:/xxx.xx/xxx/xxxxx/xxx.xxxxxx?adgangskode&tlf=12345678

Dette er noget af resultatet set i explorer:

<?xml version="1.0" encoding="iso-8859-1" ?>
<NAVN>nnnnn</NAVN>
  <ADRESSE>nnnnn</ADRESSE>
  <POSTNR>1234</POSTNR>
  <BY>nnnnn</BY>
  <TLF>12345678</TLF>

Jeg går ud fra det er disse felter der skal hentes / benyttes til indlæsning på asp siden.
Avatar billede nute Nybegynder
07. marts 2004 - 15:16 #5
hmm ... den xml du har sendt, virker ikke særlig "god". Grunden er at der ikke er noen rod node. Den bør se ud som dette:

<?xml version="1.0" encoding="iso-8859-1" ?>
<resultat>
  <NAVN>nnnnn</NAVN>
  <ADRESSE>nnnnn</ADRESSE>
  <POSTNR>1234</POSTNR>
  <BY>nnnnn</BY>
  <TLF>12345678</TLF>
</resultat>

eller noget lignende ...

er dette alle felter du ønsker ind på din side ?
Avatar billede kokholm Nybegynder
07. marts 2004 - 15:24 #6
Det har filen ganske givet - jeg har blot taget et uddrag fra den.
Kan det ikke godt tænkes at dit <resultat> kunne hedde noget andet ?

Kan jeg evt maile den til dig ?
Jeg er ikke helt vild med at der kommer for meget ud om den xml- da jeg betaler for adgangen til den.
Avatar billede nute Nybegynder
07. marts 2004 - 15:29 #7
jo, mit <resultat> bør hedde noget andet .. .jeg skrev det bare for at antyde hvordan xml'en bør se ud.

det er jo ikke noget galt i at poste xml'en her inde. det er jo ikke den du betaler for ... det er jo adgang til sitet der laver xml'en du betaler for. så længe du ikke oplyser hvor xml'en kommer fra og dine adgangskoder, kan det jo ikke ske noget.

Hvis du kunne poste en hel xml, så ville det være godt. du kan blanke ud informationerne ... jeg ønsker bare at se xml strukturen

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 15:49 #8
Her er den - lidt barberet og anonymiseret:

<?xml version="1.0" encoding="iso-8859-1" ?>
- <NUMMEROPLYSNING>
- <PARAMETRE>
  <PTELEFON>12345678</P_TELEFON> 
  </PARAMETRE>
- <ANTALSVAR>
  <IALT>1</IALT>
  <SIDER>1</SIDER>
  <FRA>1</FRA>
  <TIL>1</TIL>
  </ANTALSVAR>
- <SVARLISTE>
- <RAEKKE NR="1">
  <NAVN></NAVN>
  <ADRESSE></ADRESSE>
  <POSTNR></POSTNR>
  <BY></BY>
  <TELEFON>12345678</TELEFON>
  </RAEKKE>
  </SVARLISTE>
  </NUMMEROPLYSNING>

Hjælper det lidt ?
Avatar billede nute Nybegynder
07. marts 2004 - 15:52 #9
perfekt ... hvordan ser den ud hvis der ikke er nogle hits ?  hvis der ikke er et resultat fra søget ?

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 16:03 #10
uden svar skriver den 0 i stedet for 1.

eks.

<ANTALSVAR>
  <IALT>0</IALT>
  <SIDER>0</SIDER>
  <FRA>0</FRA>
  <TIL>0</TIL>
  </ANTALSVAR>
Avatar billede nute Nybegynder
07. marts 2004 - 16:04 #11
så kan du prøve med noget ála dette:

<%@language="vbscript"%>
<%
Dim strMode
Dim strPhoneNumber, strName, strAdress, strZipCode, strCity
Dim objConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
Dim strDSN : strDSN = "[DINE DATABASE INFORMATIONER]"

if( Request("search") <> "" ) Then
    Dim strSQL : strSQL = "SELECT * FROM tabel WHERE phonenumber = '" & Request("phonenumber")  & "'"
    Dim objConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
    Dim strDSN : strDSN = "[DINE DATABASE INFORMATIONER]"
    objConn.Open strDSN
    Set objRS = objConn.Execute( strSQL )
   
    if( objRS.EOF ) Then
        ' nummeret findes ikke i basen, og det skal hentes fra 'oplysning'
        Dim objHTTP : Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
        Dim objXMLdoc : Set objXMLDoc = Server.CreateObject( "MSXML2.DOMDocument" )
        Call objHTTP.Open( "POST", "http://xxxxx/xxxxx/xxxx.asp?adgangskoder&tlf=" & Request("phonenumber"), false )
        Call objHTTP.setRequestHeader( "Content-Type", "text/xml" )
        Call objHTTP.Send()
       
        ' Last XML ind i DOM
        objXMLDoc.loadXML( objHTTP.responseText )
        ' Tjekker for hvor mange hits der er
        Dim strHits : strHits = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/ANTALSVAR/IALT" ).text
       
        if( CInt( strHits ) > 0 ) Then
            strPhoneNumber = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/TELEFON" ).text
            strName = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/NAVN" ).text
            strAdress = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/ADRESSE" ).text
            strZipCode = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/POSTNR" ).text
            strCity = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/BY" ).text
        end if
    End if
    objConn.Close
End if
if( Request.QueryString("insert") <> "" ) Then
    objConn.Open strDSN
   
    strPhoneNumber = Request("phonenumber")
    strName = Request("name")
    strAdress = Request("adress")
    strZipCode = Request("zipcode")
    strCity = Request("city")
   
    Dim strSQL : strSQL = "INSERT INTO tabel SET phonenumber = '" & strPhoneNumber & "'"
    Conn.Execute( strSQL )
   
    objConn.Close
End if
%>
<!DOCTYPE HTML PUBLIC "-//W3C//DTD HTML 4.0 Transitional//EN">

<html>
<head>
    <title>Untitled</title>
</head>

<body>
<form id="frm" method="POST">
    Tast ind telefonnummer: <input type="text" name="phonenumber" id="phonenumber" value="<%= strPhoneNumber %>">&nbsp;<input type="submit" name="search" id="search"value="Søg" onclick="search><br>
    Navn: <input type="text" name="name" id="name" value="<%= strName %>"><br>
    Adresse: <input type="text" name="adress" id="adress" value="<%= strAdress %>"><br>
    Post nummer: <input type="text" name="zipcode" id="zipcode" value="<%= strZipCode %>"><br>
    By: <input type="text" name="city" id="city" value="<%= strCity %>">
    <input type="submit" value="Indsæt" name="insert" id="insert">
</form>
</body>
</html>

/nute
Avatar billede nute Nybegynder
07. marts 2004 - 16:05 #12
for at sætte noget ind i basen, så kan du læse den artikkel jeg har sendt et link til. den forklarer hvordan det skal gøres.
Avatar billede nute Nybegynder
07. marts 2004 - 16:06 #13
jeg ser også at der skete en lille fejl i min INSERT statement ... denne linje:

Dim strSQL : strSQL = "INSERT INTO tabel SET phonenumber = '" & strPhoneNumber & "'"

skal være

Dim strSQL : strSQL = "INSERT INTO tabel ( phonenumber ) VALUES ('" & strPhoneNumber & "' )"

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 17:22 #14
hmmm jeg har sat det ind i en asp fil nu men får flg. fejl:

Microsoft VBScript compilation error '800a0411'

Name redefined

/telefon.asp, line 10

Dim objConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
----^
Avatar billede nute Nybegynder
07. marts 2004 - 17:26 #15
ahh. .. en lille fejl. fjern hele linje 10 ...

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 17:38 #16
tak det fjernede den fejl...

nu er jeg kommet nogle flere linier ned og får nu flg. fejl

Microsoft VBScript compilation error '800a0411'

Name redefined

/telefon/oplysning.asp, line 45

Dim strSQL : strSQL = "INSERT INTO kunder ( TelefonNr ) VALUES ('" & strPhoneNumber & "' )"
----^
Avatar billede nute Nybegynder
07. marts 2004 - 17:44 #17
ok ... du kører med <% option explicit %> på din side. fejlen betyder, som den siger, at der bliver deklareret en variabel der allerede er deklareret på siden. Hvis der allerede er en variabel der hedder 'strSQL' på din side, så har du ikke behov for at sætte 'Dim' foran den når du skal bruge den igen.

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 18:11 #18
Jeg har fjernet Dim nu.

Når jeg kører linien får jeg nu syntax error i line 10.
Forsøger jeg at forsætte dukker siden op med formularfelterne dog uden formularfeltet Navn.
taster jeg et nr og søger på det får jeg flg. fejl.

Microsoft OLE DB Provider for ODBC Drivers error '80040e07'

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

/telefon/oplysning.asp, line 12
Avatar billede nute Nybegynder
07. marts 2004 - 18:16 #19
dit 'telefonnummer' felt i databasen er et felt af typen 'tal' ? hvis det er dét, så skal du ikke have '' omkring søgekriteriet

strSQL = "SELECT * FROM tabel WHERE phonenumber = " & Request("phonenumber")

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 19:47 #20
Jeg har ændret samtlige felter i databasen til tekstfelter nu, men jeg får altså stadig en Runtime Error i linie 10 - syntax error.  ?

Her er linierne:

if( Request("search") <> "" ) Then
    Dim strSQL : strSQL = "SELECT * FROM kunder WHERE TelefonNr = '" & Request("phonenumber")  & "'"
    objConn.Open strDSN
    Set objRS = objConn.Execute( strSQL )
Avatar billede nute Nybegynder
07. marts 2004 - 19:53 #21
har du prøvet at skrive ud din SQL ?
if( Request("search") <> "" ) Then
    Dim strSQL : strSQL = "SELECT * FROM kunder WHERE TelefonNr = '" & Request("phonenumber")  & "'"
Response.Write( "SQL: " & strSQL )
Response.End
    objConn.Open strDSN
    Set objRS = objConn.Execute( strSQL )

hvordan ser din SQL ud ? kan du køre den direkte i din database ?

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:14 #22
Jeg har prøvet at sætte linierne ind for at udskrive sql'en men udover den samme fejl i linie 10 sker der intet.... :-(
Avatar billede nute Nybegynder
07. marts 2004 - 20:17 #23
hvad ligger der i linje 10 ?

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:19 #24
Dim strSQL : strSQL = "SELECT * FROM kunder WHERE TelefonNr = '" & Request("phonenumber")  & "'"
Avatar billede nute Nybegynder
07. marts 2004 - 20:25 #25
du kan ikke få denne fejl:

[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.

med den linje ... det er umulig !!
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:27 #26
det er en Runtime Error
linie 10 - syntax error som den kommer med når jeg starter asp-filen.
Avatar billede nute Nybegynder
07. marts 2004 - 20:34 #27
vis mig lige linje 1-15 ...

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:37 #28
<%@language="vbscript"%>
<% option explicit %>
<%
Dim strMode
Dim strPhoneNumber, strName, strAdress, strZipCode, strCity
Dim objConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
Dim strDSN : strDSN = "DRIVER={Microsoft Access Driver (*.mdb)}; DBQ=E:\Website\oplysning.mdb"

if( Request("search") <> "" ) Then
    Dim strSQL : strSQL = "SELECT * FROM kunder WHERE TelefonNr = '" & Request("phonenumber")  & "'"
   
    Response.Write( "SQL: " & strSQL )
    Response.End
   
    objConn.Open strDSN
    Set objRS = objConn.Execute( strSQL )
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:39 #29
Tænkte lige på:

Når nummeret findes i databasen - kan den så ikke bare komme med en linie hvori den skriver at nummeret allerede findes.
Findes nummeret skal jeg nemlig ikke have foretaget mig yderligere med oplysningerne da de allerede findes i databasen.
Avatar billede nute Nybegynder
07. marts 2004 - 20:42 #30
det er *intet* galt i de linjer. Den skal ikke give nogen fejl.

jo, du kan lave en 'else' til denne if:

if( objRS.EOF ) Then
    ' Hent fra xml
else
    Response.Write( "Nummeret findes allerede" )
End if

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 20:58 #31
hej,

Forsat samme fejl ved start af filen, men når jeg blot ignorerer den kommer jeg videre til denne fejl ved forsøg på opslag af nr.

Microsoft VBScript runtime error '800a01f4'

Variable is undefined: 'objRS'

/telefon/oplysning.asp, line 13
Avatar billede kokholm Nybegynder
07. marts 2004 - 21:02 #32
godaw mand økseskaft  - burde nok gå til øjenlæge.

Der skal selvfølgelig en gagn dim objRS foran.
Avatar billede nute Nybegynder
07. marts 2004 - 21:10 #33
jeg forstår ikke hvad du mener med "Forsat samme fejl ved start af filen, men når jeg blot ignorerer den kommer jeg videre til denne fejl ved forsøg på opslag af nr"

- "Start af filen" ??
- "Ignorerer den" ?? Hvad er det du ignorerer ? Hvis du får en fejl, så kan du ikke ignorere den.

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 21:17 #34
jo den kommer op som popup fejl ved eksekvering af filen og spørger om jeg vil debug fejlen - da svarer jeg blot nej og så kommer jeg videre i forløbet.

Når jeg efterfølgende taster et tlfnr kommer den op med fejlen igen ang. linie 10, - når jeg stadig trykker annuller for debug - henter den dataene ind i formularfelterne - formularfeltet for navn kommer ikke frem på siden ?
Avatar billede nute Nybegynder
07. marts 2004 - 21:19 #35
hmm... har du noget javascript på din side ?
Avatar billede kokholm Nybegynder
07. marts 2004 - 21:22 #36
nej - den er helt bar og indeholder kun det kode vi har snakket om.
Avatar billede nute Nybegynder
07. marts 2004 - 21:29 #37
kan du ikke lægge din side et sted hvor jeg kan kigge på den. så jeg også kan se de fejl du får ? har du en webserver jeg kan nå ?

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 21:52 #38
hvad er din mail ?

Så kan jeg sende linket til dig direkte
Avatar billede nute Nybegynder
07. marts 2004 - 21:54 #39
total_anonym_fyr@hotmail.com

/nute
Avatar billede kokholm Nybegynder
07. marts 2004 - 22:49 #40
Microsoft VBScript compilation error '800a03f6'

Expected 'End'

/telefon/oplysning.asp, line 71


<form id="frm" method="POST">
Indtast telefonnummer:<input type="text" name="phonenumber" id="phonenumber" value="<%= strPhoneNumber %>">&nbsp;&nbsp;&nbsp;<input type="submit" name="search" id="search" value="Søg" onclick="search><br><BR>
    Navn: <input type="text" name="name" id="name" value="<%= strName %>"><br>
    Adresse: <input type="text" name="adress" id="adress" value="<%= strAdress %>"><br>
    Postnummer: <input type="text" name="zipcode" id="zipcode" value="<%= strZipCode %>"><br>
    By: <input type="text" name="city" id="city" value="<%= strCity %>"><BR>
    model: <input type="text" name="model" id="model"><BR>
    År: <input type="text" name="aargang" id="aargang"><BR>
    Pris: <input type="text" name="pris" id="pris"><BR><BR>
    <input type="submit" value="Indsæt" name="insert" id="insert">
</form>

Det er linien med som kommer med fejl nu...
Avatar billede kokholm Nybegynder
07. marts 2004 - 22:50 #41
det er linien med by som kommer med fejl nu (linie 71)
Avatar billede nute Nybegynder
07. marts 2004 - 22:56 #42
gider du ikke smide selve koden i en txt fil, så jeg har mulighed til at tjekke den. det tyder på at du mangler at lukke en 'if' statement.

du skal huske på at linjenummeret ikke referere til den renderede HTML, men til asp koden. hvis det er fejl i linje 71, så er det i asp koden du skal finde linje 71.

/nute
Avatar billede kokholm Nybegynder
09. marts 2004 - 09:23 #43
Jeg har sendt dig koden på mail...

Er meget glad for din hjælp.

// Ole
Avatar billede nute Nybegynder
09. marts 2004 - 10:02 #44
hmm ... der er sket noget underlig i din kode ... den skal se sådan ud (jeg har ikke testet denne kode )

<%@language="vbscript"%>
<% option explicit %>
<%
Dim strMode
Dim strPhoneNumber, strName, strAdress, strZipCode, strCity
Dim objConn : Set objConn = Server.CreateObject( "ADODB.Connection" )
Dim strDSN : strDSN = "DRIVER={Microsoft Access Driver (*.mdb)};DBQ=E:\Website\oplysning.mdb"
Dim strSQL

if( Request("search") <> "" ) Then
    strSQL = "SELECT * FROM kunder WHERE TelefonNr = '" & Request("phonenumber")  & "'"

      objConn.Open strDSN
      Dim objRS : Set objRS = objConn.Execute( strSQL )

      if( objRS.EOF ) Then
        ' nummeret findes ikke i basen, og det skal hentes fra 'oplysning'
          Dim objHTTP : Set objHTTP = Server.CreateObject("MSXML2.XMLHTTP")
          Dim objXMLdoc : Set objXMLDoc = Server.CreateObject( "MSXML2.DOMDocument" )
        Call objHTTP.Open( "POST", "http://xxxxxxxxxxx" & Request("phonenumber"), false )
          Call objHTTP.setRequestHeader( "Content-Type", "text/xml" )
          Call objHTTP.Send()
       
        ' Last XML ind i DOM
      objXMLDoc.loadXML( objHTTP.responseText )
      ' Tjekker for hvor mange hits der er
      Dim strHits : strHits = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/ANTALSVAR/IALT" ).text

      if( CInt( strHits ) > 0 ) Then
          strPhoneNumber = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/TELEFON" ).text
          strName = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/NAVN" ).text
          strAdress = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/ADRESSE" ).text
          strZipCode = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/POSTNR" ).text
          strCity = objXMLDoc.selectSingleNode( "/NUMMEROPLYSNING/SVARLISTE/RAEKKE[@NR='1']/BYNAVN" ).text
          End if
       
      Else
          Response.Write( "Nummeret findes allerede i databasen" )
      End if     
      objConn.Close
End if

if( Request.QueryString("insert") <> "" ) Then
  objConn.Open strDSN

  strPhoneNumber = Request("phonenumber")
  strName = Request("name")
  strAdress = Request("adress")
  strZipCode = Request("zipcode")
  strCity = Request("city")

    strSQL : strSQL = "INSERT INTO kunder ( TelefonNr ) VALUES ('" & strPhoneNumber & "')"

  Conn.Execute( strSQL )

  objConn.Close
End if
%>

/nute
Avatar billede kokholm Nybegynder
09. marts 2004 - 16:28 #45
JUBIIIIII nute - det virker !!!!

Nu kan jeg både søge efter telefonnummeret i databasen og slå op på nettet uden at den kommer med fejl.

Som du kan se på den tilsendte kode har jeg føjet formularfelterne "model" - "Aargang" - "Pris"

Hvordan tilføjer / indsætter jeg nu disse data i access databasen ?
Avatar billede nute Nybegynder
09. marts 2004 - 16:35 #46
du skal bare lægge dem til i din SQL. Denne linje:

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr ) VALUES ('" & strPhoneNumber & "')"

laver du om til

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, model, Aargang, Pris ) VALUES ('" & strPhoneNumber & "', '" & Request("model") & "', '" & Request("Aargang") & "', '" & Request("Pris ") & "' )"

(( husk at læse det linket jeg gav dig om hvordan du sætter noget ind i en database. Du vil højst sandsynligt få mere hjælp fra den artikel, end at jeg skal hjælpe dig via et forum ;o] ))

/nute
Avatar billede kokholm Nybegynder
09. marts 2004 - 23:28 #47
hej nute

Nu har jeg lavet flg linie:

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, By, Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("model") & "', '" & Request("Aargang") & "', '" & Request("Pris ") & "' )" 
      Conn.Execute( strSQL )

Når jeg trykker på min "indsæt" knap ser det umiddelbart ud til at den vil sætte det ind i databasen, men når jeg ser efter er der ikke kommet noget ind i den.
Jeg har også lavet en reset knap - den virker ski' heller ikke efter hensigten.
Hva hulen gør jeg forkert ?

- PS jo og jeg har læst dit link flere gange men det har ikke hjulpet mig.
Avatar billede nute Nybegynder
10. marts 2004 - 09:32 #48
hvad du gør forkert ?? det aner jeg ikke ...

er du sikker på at din SQL bliver kørt ? har du prøvet at "stoppe" scriptet efter din SQL bliver genereret ? hvis din INSERT SQL bliver kørt og der ikke kommer fejl, så er det ikke særlig store sandsynligheder for at du ikke skal finde data i basen.

prøv:

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, By, Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("model") & "', '" & Request("Aargang") & "', '" & Request("Pris ") & "' )" 
Response.Write( "SQL: " & strSQL )
Response.End
      Conn.Execute( strSQL )

nu vil du kunne se din SQL. prøv derefter at kør denne direkte i basen

hvis ikke det fungere, prøv at lave et simpelt formular som du kan taste nogle data ind i og gem det i basen. prøv at selv skrive eksempelet fra det link jeg postet. nogle gange finder du først fejl/forskelle fra et script til et andet når du skriver linje for linje. prøv at få et simpelt formular til at sætte ind i database. når du har gjort dét, så prøv å se hvad der er forskel på det script der fungere, og det script du faktisk arbejder på.

reset knap ? hvad mener du med det ?

/nute
Avatar billede kokholm Nybegynder
10. marts 2004 - 14:27 #49
Jeg har prøvet at indsætte response.write linierne for at få udskrevet sql'en på siden. Der sker ingenting. Når jeg trykker på indsæt knappen - rydder den formularfelterne - hvilket jo er korrekt nok - men den skriver ikke noget ned i databasen ligesom at den heller ikke viser sql'en på siden på trods af response.write linierne....

Her mine linier som de ser ud nu:

if( Request.QueryString("insert") <> "" ) Then
  objConn.Open strDSN

  strPhoneNumber = Request("phonenumber")
  strName = Request("name")
  strAdress = Request("adress")
  strZipCode = Request("zipcode")
  strCity = Request("city")

    strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, By, Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("model") & "', '" & Request("Aargang") & "', '" & Request("Priside ") & "' )" 
     
      Response.Write( "SQL: " & strSQL )
      Response.End
     
  Conn.Execute( strSQL )

  objConn.Close
End if
Avatar billede nute Nybegynder
10. marts 2004 - 14:32 #50
så er det dit formular der er noget galt med. det lyder som om du har skiftet submit knappen ud med reset knappen. hvis du klikker på submit så *skal* scriptet skrive din SQL ud.

din submit knap skal se sådan ud:

<input type="submit" value="Indsæt" name="insert" id="insert">

/nute
Avatar billede kokholm Nybegynder
10. marts 2004 - 15:31 #51
Jeg bli'r sgu skaldet af det her (fortryder jeg lige har brugt penge hos frisøren) - jeg fatter ikke hvorfor det ikke virker.

Jeg mailer dig filen så du kan se den i dens helhed.

Håber du gider kigge på den.

Det her irriterer mig virkelig...
Avatar billede nute Nybegynder
10. marts 2004 - 15:40 #52
send filen som attachment (txt fil), så. hotmail oversætter HTML, så jeg får ikke se hele koden :-|
Avatar billede nute Nybegynder
10. marts 2004 - 15:50 #53
ahhh ... du bruger 'Request.QueryString' ... dette er et formular der bruger POST, og derfor skal du bruge 'Request.Form' ( eller som jeg har gjort tidligere i scriptet, blot 'Request'.

Denne linje:

if( Request.QueryString("insert") <> "" ) Then

skal være

if( Request.Form("insert") <> "" ) Then
eller
if( Request("insert") <> "" ) Then

/nute
Avatar billede kokholm Nybegynder
10. marts 2004 - 17:09 #54
jeps - det hjalp - næsten...

Jeg får denne her fejl nu

Microsoft VBScript runtime error '800a000d'
Type mismatch
/telefon/oplysning.asp, line 52

som er den linie hvor dataene skal indsættes i databsen

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, By, Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("Model") & "', '" & Request("Aargang") & "', '" & Request("Priside ") & "' )"

Jeg har en mistanke om at det er mine egne formularfelter der skal hedde noget andet i linien.
Avatar billede nute Nybegynder
10. marts 2004 - 17:14 #55
'by' er et reserveret ord i databaseverdenen, sæt [] rundtom den

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, [By], Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("Model") & "', '" & Request("Aargang") & "', '" & Request("Priside ") & "' )"

ellers skal du passe  på at de felter der er af typen 'nummer' i databasen ikke har '' rundt værdien ... det er kun felter i basen der er af en tekst type der skal have '' rundt værdien ... fx:

INSERT INTO tabel (EtTekstFelt, EtTalFelt) VALUES ( 'Tekst', 100 )

/nute
Avatar billede kokholm Nybegynder
10. marts 2004 - 17:54 #56
Hmmm - det hjalp ikke.

Jeg får stadig samme fejl

Microsoft VBScript runtime error '800a000d'
Type mismatch
/telefon/oplysning.asp, line 52

Alle felter i databasen er af typen tekst - herudover har jeg et datofelt hvor access selv indsætter aktuelle dato
Avatar billede nute Nybegynder
10. marts 2004 - 17:59 #57
Har du prøvet at skrive din SQL ud ? som jeg tidligere har fortalt at du bør gøre (dette bør du *altid* gøre når dine SQL'er ikke kører). kig på dem ... prøv at køre dem direkte i din database (ikke via ASP). Har du nogle tomme felter ? tillader dine felter tomme værdier ?

/nute
Avatar billede kokholm Nybegynder
10. marts 2004 - 19:18 #58
jeg har nu prøvet at skrive flg. linie

strSQL = ( strPhoneNumber &  Request("name") & Request("adress") & Request("zipcode") & Request("city") & Request("Model") & Request("Aargang") & Request("Pris")  )
Response.Write( "SQL: " & strSQL )
      Response.End

Med denne linie skriver den fint nok indholdet af formularfelterne på siden.
Jeg har sågar lavet en ny database, uden at det hjalp... Jeg er virkelig gået i stå lige nu. Nej der er data i alle felter.
Avatar billede nute Nybegynder
10. marts 2004 - 19:39 #59
det er ikke dét jeg beder dig om at gøre ... jeg beder dig om at skrive den ud den SQL du laver !!!

strSQL : strSQL = "INSERT INTO kunder ( TelefonNr, Navn, Adresse, PostNr, [By], Model, Aargang, Priside ) VALUES ('" & strPhoneNumber & "', '" & Request("name") & "', '" & Request("adress") & "', '" & Request("zipcode") & "', '" & Request("city") & "', '" & Request("Model") & "', '" & Request("Aargang") & "', '" & Request("Priside ") & "' )"
Response.Write( strSQL )
Response.End

derefter beder jeg dig om at eksekvere denne SQL direkte i basen.

har du gjort dette ?

hvis ikke dette fungere kan hjælpe dig, så send mig en kopi af din base (uden indhold), så skal jeg se om jeg ikke kan finde ud af hvad der er galt.

Jeg har også tidligere bedt dig om at prøve at skrive eksempelet her http://html.dk/tutorials/asp/lektion20.asp. HAr du gjort det ? har du prøvet at lege lidt med denne kode ? det er skrevet på så let forståeligt dansk at hvis du ikke kan få dette til at fungere, så mener jeg at du måske burde overlade dette til andre.

Prøv at lave en side hvor du ikke gør andet end at sætte noget ind i din database. Start med en side der ser sådan ud:

<%
strSQL = "INSERT INTO enTabel (etFelt) VALUES ('værdi')
set conn = server.createobject( "ADODB.connection" )
dsn = "[connectiondetails]"
conn.execute( sql )
%>

hvis dette fungere, så går du videre med at lægge flere felter ind. når du har gjort dette, så laver du et formular du kan fylde værdier ind i, som du så sætter ind i databasen.

prøv at lade din kode ligge et stykke tid ... fjern dig fra den ... lav noget andet ... prøv at genskab "indsæt" funktionaliteten *uden* "søg telefonnummer" funktionaliteten. del din funktionalitet op, og sørg for at hver enkeltstående funktionalitet fungerer og derefter set det sammen. vær kreativ. jeg har ingen mulighed for at være kreativ for dig.

/nute
Avatar billede kokholm Nybegynder
11. marts 2004 - 12:16 #60
Hmmm... nu har jeg lavet op til flere formularer og på forskellige sider og det kan godt fungerere, men den her side - den får jeg bare fejl på hele tiden...

Jeg har sendt dig hhv. database og asp fil på mail nu.

Håber du gider se på det for mig, for den her side den vil da nu slet ikke give sig for mig.
Avatar billede nute Nybegynder
11. marts 2004 - 12:41 #61
ok .. der er flere ting galt ...

1)  Denne linje:

strSQL : strSQL = "INSERT INTO ..."

skal ikke have "strSQL : " med. Den skal se sådan ud:

strSQL = "INSERT INTO ..."

2) i linje 57 (Conn.Execute(...)), skal du skifte 'Conn' ud med 'objConn'

objConn.Execute( strSQL )

3) du har angivet en forkert kolonne i din SQL. Der er ingenting der hedder "Priside" .. .den hedder kun "Pris"

4) Din database skal være åben for at skrive i.

højre klik på databasen (.mdb filen), vælg properties (nederste menupunkt), security (den midterste fane) og giv skrive rettigheder til "everyone" (vælg "Everyone" og set kryds i "Write" boksen). jeg har kun en engelskk windows, så jeg aner ikke hvad disse ting hedder på dansk.

så kører det hvertfald for mig

/nute
Avatar billede kokholm Nybegynder
11. marts 2004 - 13:10 #62
yes ! så kører den det lige ind i databasen.

Men den laver et mellemrum foran dataene den sætter ind i databasens felter, hvilket betyder at når jeg søger på et nummer som findes i databasen giver den mig lov til at indsætte det samme nummer igen.
Avatar billede kokholm Nybegynder
11. marts 2004 - 13:11 #63
Jeg mangler også et svar så jeg kan give dig point for hjælpen.
Avatar billede nute Nybegynder
11. marts 2004 - 13:24 #64
du kan fjerne uønskede mellemrum før og efter din værdi ved at bruge TRIM():

str = "    denne indeholder mange mellemrum      "

en Response.write( "'" & TRIM( str ) & "'" ) på denne vil give

'denne indeholder mange mellemrum'

/nute
Avatar billede nute Nybegynder
11. marts 2004 - 13:27 #65
men grunden til at der er et mellemrum i dine værdier, er fordi du laver det i it formular ... fx:

<input name="zipcode" id="zipcode" value=" <%= strZipCode %>" size=8>

her har du et mellemrum som det første tegn i 'value'. den skal jo se sådan ud:

<input name="zipcode" id="zipcode" value="<%= strZipCode %>" size=8>

/nute
Avatar billede kokholm Nybegynder
12. marts 2004 - 00:57 #66
Super ! - nu kører det som en drøm...

Nute - du har så afgjort fortjent pointene.

Jeg har oprettet et ekstra spørgsmål http://www.eksperten.dk/spm/476291 så du kan få nogle flere point.
Avatar billede the_bma_man Nybegynder
12. marts 2004 - 09:26 #67
Og det ved du jo udemærket godt, at du IKKE må.
Maks 200 point per spørgsmål.
Avatar billede exp Juniormester
12. marts 2004 - 09:46 #68
Det er ikke tilladt at give mere end 200 point for et spørgsmål.

Du bedes lukke http://www.eksperten.dk/spm/476291 ved selv at tage point

Mvh
exp/coadmin
Avatar billede nute Nybegynder
12. marts 2004 - 15:07 #69
kokholm >> de udlovede points og et tak er nok ;o] Tak tak ...
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