10. december 2009 - 10:55Der er
10 kommentarer og 1 løsning
Longtext felt med data bliver pludselig til null i ASP koden?
Jeg har lavet en side hvor jeg mere praktisk kan opdaterer min database. Siden er lavet i ASP vbScript og har kørt ok i flere år. Min webudbyder lavede i weekenden en større opdatering i deres system, og flere opdateringer i mandags. Jeg sidder og bruger siden i mandags, som pludselig holder op med at fungerer, og det er i koden det går galt, og det var ikke det jeg arbejdede med.
Problemet er, at jeg henter txt fra MySQL tabellen, hvor jeg udskifter linieskift med <br> med en replace funktion, men nu får jeg fejlen: Microsoft VBScript runtime error '800a005e' Invalid use of Null
Jeg kan godt skrive teksten ind på siden direkte, men når jeg vil bruge replace eller len så er værdien pludselig null.
Det har som sagt virket i flere år, og holder pludselig op samtidig med at min udbyder opdaterer. Burde det så ikke være en fejl eller lignende i deres system?
Eller kan det være noget andet?
Feltet jeg henter fra er Datatypen Longtext og jeg tillader ikke værdien null. Det mest mystisk er, at problemet ikke er konsekvent, for fejlen sker hvor jeg administrerer teksten, men en næsten identisk kode til præsentation af samme tekst på min hjemmeeside, virker. Det holdt dog op med at virker alle steder i første omgang, hvor jeg havde en funktion til replace, men efter at have droppet funktionen og lagt replace koden ind alle steder i stedet, så er det kun det ene sted, at det ikke virker. Lige inden jeg får fejlen laver jeg en replace af data fra et andet longtext felt, som ikke fejler.
Hvis nogen kan se logikken, og fortælle mig hvad jeg skal gøre, eller endnu bedre, hvad jeg skal bede min udbyder gøre, så er der max point!
Aflæs felterne i dit record set i samme rækkefølge som de står i SELECT-sætning, og præcis en gang. (måske skal du endda have de store felter til sidst)
...og sådan har man egentlig altid skullet gøre...
det er lidt hårdt ved fleksibiliteten, og lyder i mine øre lidt underligt, og hvordan skal det have indflydelse på at der er tekst i feltet ved response.write(longtext) og værdien er null ved len(longtext)?
Ikke spor underligt - disse krav gør det muligt at have en mere effektiv kode i databasedriveren. Nogle implementationer tillader så at man tager den i tilfældige rækkefølger osv - du har bare være heldig indtil nu.
Jeg forstår ikke den sidste del af dit spørgsmål - kan du vise noget konkret kode?
Jeg var lige ved at sende dig koden, men ville lige overskueliggøre den lidt, og så virkede det.
Jeg havde fået det lidt uoverskuligt ved at skulle få det til at vise ete eller andet, og derfor hentede jeg data fra databasen flere gange. dette lavede jeg om til kun at hente det en gang ind i en variabel. Det synes jeg, at jeg prøvede igår også, men der har måske været sneget sig noget andet ind. Lidt længere nede i koden henter jeg igen samme data ind fra databasen, men det fejler ikke?
Nok om det, for nu virker det, og det med udgangspunkt i det du skrev.
Jeg er ved at lave det hele om, og jeg er ikke begyndt at kode endnu, så jeg vil gerne have styr på dit indlæg.
Når jeg henter data med select * from tabel, skal jeg så tage alle kolonner ind i rækkefølge? da jeg ikke altid bruger data i samme rækkefølge, så må jeg jo kunne lægge det i variabler og bruge dem i vilkårlig rækkefølge? Hvis du ikke skal modsige dig selv, skal jeg så have de tungeste felter til sidst i rækken i tabellen, i dette tilfælde min 2 longtext felter?
Jeg havde så ikke lige set pi-hus indlæg inde jeg sendte, og det svarer jo egentlig på mine spørgsmål.
Hvis erikjacobsen mener han ikke vil have pointene, så er det fint med mig, så får pi-hus dem jo bare, selvom han jo bare omskriver erikjacobsens svar. Så erikjacobsen, smid et svar, eller skriv nej tak :-)
Bør man aldrig bruge select * Hvad hvis man skal bruge alle felter, eller f.eks. 18 af 20 felter. Bør man så stadig tage hvert enkelt felt som du skriver. har man en tabel med 4 kolonner, så er den eneste forskel på "select felt1,felt2,felt3,felt4 from tabel" og "select * from tabel" vel at det sidste er hurtigere at skrive, eller?
Jeg er også lige nød til at høre hvad der irriterer dig så meget ved pointsystemet, at du har valgt at boykotte det :-)
Der er snart nogle billigere point på vej til pi-hus..
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.