Ska kund_id samt produktid verkligen vara strängar?
Av just namnet id förefaller det vara ett nummer. (Som även ditt felmess tyder på att något ska vara)
En utskrift av variabeln laggtill, vad ger det?
12 svar · 362 visningar · startad av Dashi
produktid = Cstr(Request.Form("produktid"))
laggtill = "SELECT * FROM tabell WHERE kund_id = '" & kundid & "' AND produkt_id = '" & produktid & "'"
ger:
Microsoft OLE DB Provider for ODBC Drivers (0x80040E07)
[Microsoft][Drivrutin för ODBC Microsoft Access] Typblandningsfel i villkorsuttryck.
Mvh //Darek
Ska kund_id samt produktid verkligen vara strängar?
Av just namnet id förefaller det vara ett nummer. (Som även ditt felmess tyder på att något ska vara)
En utskrift av variabeln laggtill, vad ger det?
produktid verkar det ju som att han gör om till en sträng med cstr() men görs detsamma med kundid?
För övrigt så kan du nog lösa ditt problem genom att ta bort ' ' runt om där det är ett nummer (eller om det är " ", har inte jobbat mot access på länge)
############### -Såhär har jag nu- ##############
Databas: kund_id = TAL , produkt_id = TAL
Kod:
produktid = Cint(Request.Form("produktid"))
laggtill = "SELECT * FROM tabell WHERE kund_id = " & Replace(kundid, "'", "''") & " AND produkt_id = " & Replace(produktid, "'", "''")
############## -SLUT- ####################
Detta funka perfekt, forutom att jag nu ska ändra så att jag kan lägga till bokstäver i produktid, för jag hade siffror tidigare men pga lite ändringar så måste jag ha med bokstäver nu och då gjorde jag följande ändring men får inte rätt på det:
Databas: kund_id = TAL , produkt_id = TEXT
produktid = Cstr(Request.Form("produktid"))
laggtill = "SELECT * FROM tabell WHERE kund_id = '" & kundid & "' AND produkt_id = '" & produktid & "'"
Kanske lite lättare att förstå nu? :)
OBS! ni får gärna försöka att få det resultatet med den gammla koden så jag får med replace..
Mvh //Darek
Känns som sagt som om det ska vara tal och inte strängar, alltså ska du inet använda ' runt värderna. F.ö. ska man inte skapa ett recordset för att lägga till poster. Det gör du med SQL och kommandot Insert.
Poffe skrev:
kund_id = " & kundid & "Man ska inte ha fnuttar (') när det är tal.
Läs gärna ovan :)
Ja, du skriver ju att kund_id är tal i databasen, alltså ska du inte ha ' runt det i sql-satsen
okej det funka jätte fint med följande sats:
laggtill = "SELECT * FROM tabell WHERE kund_id = " & Replace(kundid, "'", "''") & " AND produkt_id = '" & Replace(produktid, "'", "''") & "'"
det va så du mena Poffe? :)
Ja i princip. Dock tycker jag ju inte att du ska lägga till poster via recordset, men du har ju varit rätt tydlig förut med att du inte vill att vi ska säga hur du ska göra. Så länge det funkar för dig så kör på.
Poffe skrev:
Ja i princip. Dock tycker jag ju inte att du ska lägga till poster via recordset, men du har ju varit rätt tydlig förut med att du inte vill att vi ska säga hur du ska göra. Så länge det funkar för dig så kör på.
du menar att jag ska lägga till det som Ovveride föreslog?
man kan föreslå som du gjorde nu och man kan säga att jag ska, och då blir det skillnad, lyssnar mer på folk som säger, ``du kanske borde göra så för att det blir bättre för dig´´(som du gjorde) än att folk säger ``gör så för det blir bättre och gör du inte så e du korkad ungefär´´, förstår du vad jag menar med skillnaden? :)
men det som han föreslog är inte det recordset då osså?
Nu komme rjag inte ihåg exakt vad han föreslog men som jag minns det så var det SQL. Du kan alltså uppdatera, radera och lägga till poster i en databas utan att skapa ett recordset. Recordset ska du endast skapa när det behövs, alltså när du ska hämta poster, annars finns det ingen mening med det.
Han skrev vidare
Precis som Poffe säger, så får du givetvis göra hur du vill, men jag anser att det bara är korkat att säga att 'det fungerar för mig' utan att försöka förbättra sin kodmodell.
Vilket jag faktiskt håller med om egentligen. Okej att det funkar men det finns oftast fler sätt att göra saker på och tyvärr har du ju läst bl.a. IDG's guide och det som lärs ut där är inte de bästa sätten, så är det bara. Det finns ingens om kan försvara att uppdatera, ta bort eller lägga till i en databas genom att skapa recordset.
Vidare är det väll i stort sätt bara access som tillåter det, vilket betyder att i framtiden om applikationen växer så måste du ändå koda om allting eftersom de större och bättre databaserna inte kommer tillåta sådan kodning.
Poffe skrev:
Nu komme rjag inte ihåg exakt vad han föreslog men som jag minns det så var det SQL. Du kan alltså uppdatera, radera och lägga till poster i en databas utan att skapa ett recordset. Recordset ska du endast skapa när det behövs, alltså när du ska hämta poster, annars finns det ingen mening med det.
Han skrev vidare
Precis som Poffe säger, så får du givetvis göra hur du vill, men jag anser att det bara är korkat att säga att 'det fungerar för mig' utan att försöka förbättra sin kodmodell.
Vilket jag faktiskt håller med om egentligen. Okej att det funkar men det finns oftast fler sätt att göra saker på och tyvärr har du ju läst bl.a. IDG's guide och det som lärs ut där är inte de bästa sätten, så är det bara. Det finns ingens om kan försvara att uppdatera, ta bort eller lägga till i en databas genom att skapa recordset.
Vidare är det väll i stort sätt bara access som tillåter det, vilket betyder att i framtiden om applikationen växer så måste du ändå koda om allting eftersom de större och bättre databaserna inte kommer tillåta sådan kodning.
jo jag vet men tycker de e fel att kalla allt korkat, människor är olika och dom tycker och tänker olika sen får man ju acceptera det man behöver ju inte utrycka sig som att det är korkat.
okej, men jag har faktist släppt IDG pga att den koden är för tom, om man säger så, ingen säkerthet, inget innehåll, bara ren lös grund.. men den koden jag har fortsatt på nu har jag använt pga att jag sett på ett 50- tal koder där dom koda på samma sätt som mig, funka skitbra med den koden, killen som koda har även ett eget företag, som är framgångsrikt som bara den.. :)
Men jag ska gå vidare på den koden, senare, men inte just nu för just nu har jag grunden att tänka på, att få allt och funka, blir för rörigt att sätta in sig i hela ändringen, lättare att ändra sen efter det fungerar.. sitter med en tidspress på det hela osså..
Mvh //Darek