Avatar billede Slettet bruger
19. juni 2002 - 04:56 Der er 14 kommentarer og
1 løsning

Hvad er der galt.. "Split"

Hej jeg har et lille problem, da jeg har lave en stomp kode der skal finde en oplysninger fra en anden hjemmeside og læke dem ind i en database går det galt..

Min kode

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")

Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HttpObj.Url = "http://www.test.dk/test.asp?ID=58"
HttpObj.FollowRedirects = True
HttpObj.RequestMethod = "GET"
HttpObj.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"
strResult = HttpObj.GetURL

' Navn
test1 = Split(HttpObj.GetURL," ")
Navn = Split(test1(2),"</td>")


Her til går det fint..

conn.execute("INSERT INTO free (navn, adr) values ('" & NAVN(0) & "','" & "Test" & "')")

Men når jeg så skal sæte navn(0) ind i database kommer der ikke nåde ind kun "Test"

Hvad gør jeg forkert.. ?

    Conn.Close





Avatar billede tmceu Praktikant
19. juni 2002 - 05:34 #1
Navn er et array, dannet på baggrund af 3. element i et andet array: test1. Hvis dette er tomt, eller i det mindste 3. element er tomt, vil du kun få indsat det statiske ord "test".

Du kan teste indholdet af et array på denne måde:

For i = 0 To UBound(test1)
Response.Write i & ": " & test1(i)
Next
Avatar billede _just4fun_ Nybegynder
19. juni 2002 - 09:02 #2
Hvis du bruger den INSERT du har vist her har du hardcoded "Test" i din insert :-)
Hvad med at bruge din variabel i stedet..
Avatar billede tmceu Praktikant
19. juni 2002 - 09:07 #3
Den kommentar var vel just4fun :-)

Vedkommende skriver jo netop, at der ikke kommer noget ind fra variablen navn(0), men kun "Test". Der indsættes i 2 felter, hvor det første felt indeholder værdien fra variablen, så mon ikke det er bevidst ifm. debugging ?
Avatar billede _just4fun_ Nybegynder
19. juni 2002 - 09:13 #4
Altså... hvis der kun kommer Test ind, og der er hardcoded Test i det ene felt..... tjaaa, så kunne det godt være det der blev overset... Sårn er det med fejl! Nogen gange ser man ikke liiige det der er det vigtige. Men bortset fra det har du som sådan ret i din betragtning. Regnede bare med at manden havde accepteret hvis han kunne bruge svaret, og derfor kom jeg med et alternativ.
Avatar billede Slettet bruger
19. juni 2002 - 09:54 #5
Jeg har ikke problemmer med at læse navn(0) men jeg kan ikke få den til at skrive det ind i databasen.

min kode virker fra..

Set conn = Server.CreateObject("ADODB.Connection")
Conn.Open "DRIVER={Microsoft Access Driver (*.mdb)};DBQ="&Server.MapPath("database.mdb")

Set HttpObj = Server.CreateObject("AspHTTP.Conn")
HttpObj.Url = "http://www.test.dk/test.asp?ID=58"
HttpObj.FollowRedirects = True
HttpObj.RequestMethod = "GET"
HttpObj.UserAgent = "Mozilla/4.0 (compatible; MSIE 5.0; Windows NT; DigExt)"
strResult = HttpObj.GetURL

' Navn
test1 = Split(HttpObj.GetURL,"&nbsp;")
Navn = Split(test1(2),"</td>")

Og her fra går det galt da jeg vil indskrive Navn(0) i min database..

conn.execute("INSERT INTO free (navn, adr) values ('" & NAVN(0) & "','" & "Test" & "')")

Her har jeg to felter men den vil ikke skrive min data fra Navn(0)
i føste felt, men kun test i anden felt..

Håber i forstå..

kan fanges på icq 56665453
Avatar billede Slettet bruger
19. juni 2002 - 09:56 #6
Mit spørsmål er hvorfor kan jeg ikke få navn(0) ´s data ind i en database men kan godt se det på nette

Response.Write "Navn : " & Navn(0)

men ikke i databasen !!!
Avatar billede tmceu Praktikant
19. juni 2002 - 09:59 #7
Du skriver at du ikke har problemer med at læse navn(0) - betyder det, at den ikke fejler i din split, at du har prøvet at udskrive den til skærmen eller ?

Du skriver ikke noget om at du får en fejl i dit INSERT statement og derfor antager jeg, at navn(0) ikke indeholder ulovlige tegn eller overskrider max. længden på feltet.

Jeg vil påstå at feltet enten er tomt eller indeholder et whitespace (linieskift, tab, mellemrum el.lign).

Hvis du laver en response.write "->" & navn(0) & "<-" hvad får du så af resultat ?
Avatar billede _just4fun_ Nybegynder
19. juni 2002 - 10:02 #8
En anden ting man kan gøre for at lette debugginarbejdet lidt er at lave en variabel der hedder f.eks.
sSql = "INSERT INTO free (navn, adr) values ('" & NAVN(0) & "','" & "Test" & "'
Og så bruge den i execute statementen. PÅ den måde synes jeg ihvertfald det er mest overskueligt, og der er nemt at lave en
response.write sql
response.end

lige efter for at se hvad der egentlig bliver forsøgt eksekveret.
Avatar billede tmceu Praktikant
19. juni 2002 - 10:04 #9
Havde ikke set din sidste kommentar :)

Hvor ser du, at værdien ikke er kommet ind i databasen. Direkte i Access ?

Hvis du eks. kigger i Access, kan man godt blive snydt, hvis eks. værdien er som denne:

vbCrLfData fra variablen

Denne kan optræde i Access som et tomt felt, da vbCrLf laver et linieskift
Avatar billede Slettet bruger
19. juni 2002 - 10:12 #10
Tmceu >> Ja jeg ser det lige i access

Jeg har jo lige set at navn(0) indholder Kim og ikke anden
men hvorfor vil de så ikke skrive kim i databasen. ?
Avatar billede tmceu Praktikant
19. juni 2002 - 10:19 #11
Jamen lad os forfølge min teori lidt længere :-)

Hvis din variabel indeholder:

vbCrLfKim og du udskriver den til browseren, vil du kun se Kim, da linieskift ignoreres i HTML (der anvendes jo <BR>).

Du kunne jo prøve denne:

response.write replace(navn(0), vbCrLf, "UPS")

Har jeg ret, skulle den udskrive "UPSKim"
Avatar billede Slettet bruger
19. juni 2002 - 10:44 #12
TMCEU >>
den skriver UPSKim BelhaugeUPS

hvad skal jeg gøre få at få det væk ?
Avatar billede tmceu Praktikant
19. juni 2002 - 10:48 #13
Eksempelvis kan du fjerne dem på denne måde:

navn(0) = replace(navn(0), vbCrLf, "")
Avatar billede Slettet bruger
19. juni 2002 - 13:59 #14
Meget stort tak til TMCEU
Avatar billede tmceu Praktikant
19. juni 2002 - 18:08 #15
Det var så lidt :-)
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