webForumDet fria alternativet

Kolla 2,2 i databas

12 svar · 324 visningar · startad av alfa

alfaMedlem sedan juni 2000202 inlägg
#1

Kör en Access databas och försöker att kolla i databasen om det finns något värde som är större än 2,2 har testat med pungt också men då tar han bara bort den och testar 22
Datatyp är valuta

Feltyp:
Microsoft JET Database Engine (0x80040E14)
Syntaxfel (komma) i frågeuttrycket '(((kop.Pris)>2,2)) OR (((kop.Pris)=2,2))'.
/Order.asp, line 27

Finns det någon bättre datatyp för detta har tänk uppdatera till
Sqlserver

Alfa

@ndersMedlem sedan juni 200032 969 inlägg
#2

Jag har aldrig använt valutatypen, men det låter konstigt att den kastar bort decimalpunkt.

Jag hade använt datatypen tal och ställt in antalet decimaler.

I SQL Server finns sedan datatypen float, och det finns säkert motsvarande valutadatatyp om du nu skulle vilja använda det. :)

Mvh,

alfaMedlem sedan juni 2000202 inlägg
#3

Om jag använder decimal byter han ut 2.2 till 22

Det skickas från en text ruta och tas emot och läggs in i en variabel. Variabeln skriver ut 2.2 sedan händer det något i databasen.

Alfa

@ndersMedlem sedan juni 200032 969 inlägg
#4

Har du provat att byta till datatypen tal?

alfaMedlem sedan juni 2000202 inlägg
#5

Nu har jag datatypen
Tal
Decimal = 2

Nu har jag fått den att läsa det men när jag ska lägga in den
Blir det 22 i stället för 2.2 men om jag skriver 2.2 i siffror lägger den in rätt.Det är något med variabeln den säger att det är en sträng. Hur ska man göra med variabeln.

Alfa

@ndersMedlem sedan juni 200032 969 inlägg
#6

Jag förstår ingenting av det du skriver. Visa den koden som felar.

Mvh

alfaMedlem sedan juni 2000202 inlägg
#7

Felet är Variabeln tror jag.

När jag ska lägga till 2.2 i databasen skriver den 22 i stället
Tar bort pungten när värdet kommer från variabeln.
Men skriver jag 2.2 med siffror funkar det.

Pris = Request.Form ("Pris")

Set rs = Server.CreateObject("ADODB.Recordset")
rs.Open "SELECT * FROM kop where 1 = 2", Con, 1 , 2
rs.addnew
rs("Pris") = 2.2 (Funkar)
rs("Pris") = Pris (Funkar inte)
rs.update
rs.close
set RS = nothing

Alfa

@ndersMedlem sedan juni 200032 969 inlägg
#8
rs("Pris") = CDbl(Pris)

Mvh

alfaMedlem sedan juni 2000202 inlägg
#9

Skriver ändå 22 i stället för 2.2

@ndersMedlem sedan juni 200032 969 inlägg
#10

Skumt...

Då tar vi och gör det på rätt sätt istället. Med INSERT, och inget recordset. Byt ut:

Pris = Request.Form ("Pris") 

Set rs = Server.CreateObject("ADODB.Recordset") 
rs.Open "SELECT * FROM kop where 1 = 2", Con, 1 , 2 
rs.addnew 
rs("Pris") = 2.2 (Funkar) 
rs("Pris") = Pris (Funkar inte) 
rs.update 
rs.close 
set RS = nothing

mot:

strSQL = "INSERT INTO kop (pris) VALUES (" & replace(request.form("pris"),",",".") & ")"
con.Execute strSQL, , 128

Mvh

alfaMedlem sedan juni 2000202 inlägg
#11

Har en kund_id också som måste in pga relationer
Verkar inte som jag fick till det rätt.

strSQL = "INSERT INTO kop (pris),(Kund_id) VALUES (" & replace(request.form("pris"),",",".") & "),1"

@ndersMedlem sedan juni 200032 969 inlägg
#12
strSQL = "INSERT INTO kop (pris, Kund_id) VALUES (" & replace(request.form("pris"),",",".") & ", 1)"

Det är en hel del pill att använda INSERT / UPDATE / DELETE-frågor istället för motsvarande ADO-metoder. Men när man väl lärt sig det finns det bara fördelar.

Mvh

alfaMedlem sedan juni 2000202 inlägg
#13

Nu Funkade det.

Tack !

Alfa

128 ms totalt · 3 externa anrop · v20260731065814-full.102f7fcd
0 ms — hämta forumlista (cache)
0 ms — hämta statistik (cache)
126 ms — hämta tråd, inlägg och bilagor (db)