'Laver en connection til Telefonbog databasen paa SQLserveren Set conn = Server.CreateObject("ADODB.Connection") conn.Provider="MSDASQL" conn.open "DSN=Beskeder;uid=sa;pwd=;APP=TelefonBog;WSID=MAINFRAME;Database=Forum"
Har du prøvet at komme hhv. kommaer og gåseøjne i de korte tekster ? Jeg tror det er der det går galt.
Tænk på at når du sætter din SQL var op er det en lang tekststreng du sætter ind i den, og selvom du behørigt har afgrænset de enkelte felter med kommaer og gåseøjne, så får du et problem hvis der i en tekst er gåseøjne og kommaer.
Eks. hvis felter beskedemne indeholder denne en tekst a la dette:
bla bla bla "bla " bla "," bla" bla
Selvom du sætter gåseøjne rundt om denne vil SQL tro det er 2 felter, og så har du problemet.
Prøv evt. som test at udskrive SQL variablen (response.write SQL) inden du kalder conn.exeute(sql) så kan du se hvordan den egentlige sql-streng kom til at se ud, og så er det måske lettere at se hvad der går galt.
Jeg har prøvet at rense det indtastede for (') og nu kommer den ikke med en fejlmeddelelse, men i stedet skriver den kun noget af teksten ind i databasen.
Den skrev 1681 tegn. (herefter må den så være blevet træt?)
Har du prøvet det med response.write SQL for at se hvordan din SQL streng ser ud ? Så kan det være at du kan se hvilket tegn der er nr. 1682 og dermed også hvad der er skyld i at det går galt. Noget må det jo være.
Windows arbejder jo med s^kaldt "nul-terminerede" strenge. Hvis et tegn i en streng er "ukendt" (f.eks. et special tegn) for SQL serveren, kan det tænkes at den opfatter det som et nul-tegn og dermed tror der ikke er flere tegn i teksten.
Det er vel ikke sådan at det er binære data (f.eks. et kompileret program, eller et billede ellr lign.) din tekst består af ?
Som et alm. tekstfelt tror jeg faktisk kun at SQl serveren accepterer karakterværdier mellem dec 32 og dec 255 (20h og FFh), så hvis nogle af tegnene har asciiværdier mellem 00h og 1Fh kan det gå galt.
sådan som du skriver det, indeholder det så linieskift eller kommer de 3 a'er og mellemrummet i en lang række ?
CR og LF er nemlig nogle af de tegn der ligger under 20h.
Jeg tror ikke på det med variablens kapacitet. Den burde være uendelig men der kan selvfølgeligt være andre årsager.
En mulighed kan være at du ikke bruger transaktionsstyring. Jeg ved fra andre der bruger SQl server og f,eks, vil slette en række records at der var nogle mærkelige grænser for hvornår det virkede, og hvornår dt ikke virkede, og det forsvandt ved at starte og afslutte transaktionsstyring hhv. før og efter sletningen. Måske kan det være noget i den retning der spiller ind her, fordi det er en meget lang tekst du vil lægge ned, selvom jeg har svært ved at se hvorfor det skulle være sådan.
Endeligt kan det vel også være et hardware problem: F.eks. hvis din SQL server kører på en NT server og du bruger en W95/98 arbejdsplads. Der er nogle registry-indstillinger man kan/skal sætte på serveren for at sikre at låsninger kører rigtigt på serveren, og måske kan det være noget af det der spiller ind.
hvis der allerede er linieskift mellem de 1862 (eller hvor mange tegn det nu er du får lagt ned) så tyder det på at det ikke er dem, og så burde du ikke ændre på det.
Det med W95 kontrol NT handler om noget med Aggressive Locking. Jeg kan ikke lige huske de 2 variable i hovedet der skal ændres i NT's registry, men du kan evt. søge dem på MS hjemmeside. Du skal lede efter "oportunistic locking". Der er en del dokumenter der omtaler problemet.
Vedr. transaktionsstyring: Det er noget med BeginTransaction og EndTransaction, men jeg er egentligt ikke eksperten lige på dette område så der kan jeg ikke hjælpe dig. Jeg ved bare at en af mine bekendte fortalte at det var løsningen på et problem han havde vedr. sletning af en stak records, som jeg nævnte.
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.