- Skriv ut den färdiga SQL-frågan, vi vet inte vad dina variabler innehåller.
- Formatera den färdiga SQL-frågan så den går att läsa i inlägget.
- Måste tydligen postas igen: http://www.webforum.nu/showthread.php?t=142490
mvh
40 svar · 1 652 visningar · startad av oskars · sida 2 av 3
Hej på er! Dimma och grejer på morgonen nu för tiden och man märker att man inte är helt på G i kroppen när man känner att halsen reagerar när man pratar på jobbet... usch, jobbigt. Hur som helst... Jag försöker gå över till MySQL från Access... ooooh yes! Kände mig riktigt odödlig där ett tag. "Kul" tyckte jag... och sen "Ojdå, det verkar ju jättelätt!"... och sen "Ajdå, så lätt var d
Läs frågan i sin helhet →mvh
Om man inte läser SQL-frågan såsom databasmotorn tolkar den är betydligt svårare (ibland omöjligt) att veta vad som är fel, eftersom man inte känner till innehållet i alla variabler. Jag gissar på att en eller flera variabler som används som tal i SQL-frågan (dvs utan apostrofer) saknar värde.
Exakt! Den klagar sådär nrä jag inte fyller i ALLA fälten... fattar inte varför den måste ha ett värde när jag inet angett "Not Null" i databasen..
Response.write SQL funkar ju inte... eftersom jag får felmeddelandet så ser jag ju inte frågan... :r
Du ska ju skriva ut SQL-frågan istället för att exekvera den.
- - - -
Det spelar ingen roll att du tillåter NULL, SQL-frågan måste ändå vara syntaxmässigt korrekt. Skall du ha med ett fält i din UPDATE, får du inte utelämna värde helt och hållet. Skall du ha null, då får du ange NULL i din SQL-fråga.
Underbart!
UPDATE Adresser2006 SET
GS = 0,
KOrder = 1,
Orderdatum = '2006-09-21 10:04:59',
Ordernotering = 'Hej!'
Avbetalning = '300',
Losen = 'Fritt',
Betvillkor = '300',
Frakt = '127',
Levtid = '1-2veckor',
Produkt1 = 'Produkt1',
Antal1 = D46,
Storlek1 = '1',
Pris1 = 3250,
Produkt2 = 'Produkt2',
Antal2 = D14,
Storlek2 = '1',
Pris2 = 3250,
Produkt3 = 'Produkt3',
Antal3 = 50,
Storlek3 = '1',
Pris3 = 3250,
Produkt4 = 'Produkt4',
Antal4 = 66,
Storlek4 = '1',
Pris4 = 3250,
Produkt5 = 'Produkt5',
Antal5 = 52,
Storlek5 = '2',
Pris5 = 1247,
Produkt6 = 'Produkt6',
Antal6 = 46,
Storlek6 = '5',
Pris6 = 2200,
Foretag = 'Företag'
WHERE ID = 10
Så där ser det ut när jag försöker skicka...
Du saknar apostrofer runt dina antalsvärden, som innehåller typ D46. Vad gör D:na där?
Damstorlek... alltså D46.. :) whooops.. blir hopplös nästan.. frågorna blir så långa att det lääätt blir fel.. ska söka igenom det där! Där lärde jag mig en bra grej, det där med att skriva ut frågan! TACK! :) :D
- - - - -
Ska jag ta bort &" från alla Request.Form?
Men.
Du har ju stoppat värdena i antalsfälten. Då ska de väl inte vara där, utan hör mer hemma i storleksfälten? Det är antal1 och antal2 som innehåller dessa "felaktiga" värden.
I övrigt känns det som att datamodellen är rätt obra, men det kan vi ta en annan gång. :)
:r Du menar att det är många fält? tänkte nog att den frågan skulle komma.. men jag tror väl att jag behöver så många fält för det...va vet jag. :OO Försöker iaf! :l
Jag menar att de fälten inte riktigt hör hemma där. Vad händer om man vill beställa fler än fem produkter?
Produkterna i beställningen bör lagras i en egen tabell med en relation till själva huvudtabellen.
Försöker iaf!
Det är väl bra! :)
Utan att försöka lär man sig inget, och utan att göra fel lär man sig inget. Alla är nybörjare någon gång. :)
mvh
Fast grejen är att kunden inte kommer köpa fler än 5st beställningar ! Det är det fina :D
- - - - - <- har lärt mig dina avskiljarstreck nu, hehe
Men sjuttsingen! När man Inte fyller i alla produktrader och skickar några tomma så får jag samma felmeddelande...
den försöker med: Storlek2 = '', Pris2 = , Produkt3 = '', Antal3 = , Storlek3 = '',
varför får jag itne skicka dessa tomma? Har detta med tomsträngkonkatering att göra?
(fan va du är grym som orkar svara asså)
varför får jag itne skicka dessa tomma?
Det beror på att enligt SQL-syntax måste du skriva fältnamn = värde. Skall du använda NULL, då måste du skicka NULL i SQL-frågan.
Ex:
UPDATE tabell SET fält1 = 1, fält2 = NULL WHERE id = 4711
Exempel på hur du kan bygga upp det i ASP-koden:
If request.form("antal1") = "" then
sAntal1 = "NULL"
else
sAntal1 = request.form("antal1")
end if
Använd sedan variabeln istället för request.form("antal1") när du bygger upp SQL-frågan.
- - - - -
Tomsträngskonkatenering har endast att göra med onödigheten att lägga till ingenting på slutet av saker och ting med &"".
mvh
Ojdå, så jag måste skapa en massa If-satser då också? :) Ser inte logiken i det.. Har ju ett annat formulär där jag kan skicka tomma fält :(
EDIT: Fast just det.. jag skickar ju inte tomma fält tror jag inte.. utan i dom fälten som är "Tomma" där... är egentligen value="<%=RecSet("Namn")%> t.ex..från databasen.. coh då är dmo ju egentligen inte tomma.. medans det hrä orderformuläret inte innehåller någotn data från databasen innan... fattar du?
Detta borde väl lösas med att sätta value
Du kan skicka tomma värden i SQL-frågor, om det är värden som omsluts av apostrofer, dvs text / varchar, strängvärden. I ditt andra formulär kan du inte skicka tomma fält om det är fält av taltyp.
Nu löste jag problemet genom att ange value="0" på alla textfälten som bara ska innehålla tal så att dom står som 0 som standard... Det blev enklare än att ha massa If-satser! Så nu verkar det fungera perfekt!
Hur känner du egentligen? Sitter du vid datorn, röd i ansiktet och frustrerad, och spottar på mig? :D
oskars skrev:
Hur känner du egentligen? Sitter du vid datorn, röd i ansiktet och frustrerad, och spottar på mig? :D
Hehe!
Nej, jag sitter och är glad och nöjd eftersom du både lär dig saker, och uppskattar hjälpen. Det är så mycket roligare att hjälpa till när det uppskattas. :)
mvh
Kul! :) Ja du anar inte hur glad jag är att jag får sån hjälp asså.
Jag är ny vid MySQL som sagt, det här systemet som jag håller på med nu, som jag haft problem med, det fungerade tidigare perfekt med Access... men nu ska det bli till MySQL! Revolution!
:)
Hej!
Hur gör man egentligen en korrekt RecordCount med MySQL? Det jag använde förut (RecSet.RecordCount) fungerar inte längre för mig... jag har sökt på google och har fått fram olika förslag på funktioner, men jag har inte fått något att fungera.
Hoppas att kanske någon av er har ett konkret kodförslag!
Mvh
Oskar
Anledningen till att du inte kan använda RecordCount är att du säkert använder adUseServer som CursorLocation för din databaskoppling, och då fungerar inte den egenskapen. Du måste använda adUseClient istället.
Testa att sätta CursorLocation=3 på ditt databasobjekt innan du öppnar det.
Detta låter säkert onödigt rörigt. Det finns en bra sida hos MySQL som förklarar det ganska bra:
http://dev.mysql.com/tech-resources/articles/vb-cursors-and-locks.html