29. december 2007 - 15:14Der er
25 kommentarer og 2 løsninger
Type mismatch
Jeg har en DB hvor i der er en hovedtabel, og 3 andre tabeller, som der så er relationer til. Jeg har ingen problemer med at oprette poster, men når jeg skal opdatere en post, får jeg følgende fejl:
Provider error '80020005'
Type mismatch.
I de tabeller hvortil jeg har relationer er der 2 felter, autonummering og et tekstfelt. Jeg kan godt få den til at udskrive det, som der er i databasen til en dropdown menu, som så også indeholder andre muligheder.
evt. en dato? Provider error '80020005' Type mismatch.
This can happen if you try to set a date column to a value that is not in proper date format, e.g. "UPDATE tableName SET dateColumn='31/31/2002'"... it can also happen when using a command object and named constants (e.g. adDate and adLongVarChar); I will always recommend using a straight EXEC statement against a connection object, rather than go through the hassle and rigorous code required by an ADODB.Command object.
Det er ikke et spørgsmål om gammel eller ny, men snarere et spørgsmål om resurseforbrug. Din metode er væsentlig dyrere hvad angår resurseforbrug end den a1 foreslår, da din skal vedligeholde en cursor for at håndtere opdateringen. Det er ikke den foretrukne metode på en server der skal håndtere mange brugere på samme tid. Ud over det så burde den være lige så gyldig som enhver anden metode... :)
Jeg tror du får fejl i din nye version (den som a1 foreslår), fordi der er indsat et semikolon inden WHERE - det må der ikke være.
En ting du så skal passe på med, når du bruger denne strengsammensætningsmetode til at opdatere data, er SQL-injections, dvs. hvor felterne indeholder tegn der kan "ødelægge" din SQL-sætning og indføre nye "features" (som typisk ikke er ønskelige for din applikation). Du bør i princippet checke ALLE felter for apostroffer og om typerne passer til de felter værdien indsættes i. For tekstfelter kan du redde meget ved at udskifte hver apostrof med 2 af slagsen. Altså f.eks. udskift forekomsten
Jeg bruger en access 2000/2003 DB. Og heldigvis er ressourcer ikke et problem i dette tilfælde =) men tak for informationen alligevel. Dog er jeg ikke kommet frem til et brugbart resultat endnu :(
Nu kender jeg i sagens natur ikke noget til de omstændigheder dit site kører under, men det er ALTID en god idé at vælge den mest optimale løsning ifht. resurseforbrug - hvem ved, det kan måske en dag blive relevant at sitet skalerer og så er det noget møg at have brugt en suboptimal metode 1000 steder i sin kode ;-)
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.