webForumDet fria alternativet

Lägga till NULL i tal-fält i en databas

ASP

5 svar · 345 visningar · startad av Calippo

Medlem sedan aug. 2002536 inlägg
Frågan#1

Har ett problem med tomma fält.

Det är så att jag hämtar data från en tabell och lägger in det i en annan tabell. Fälten är både text och tal.
Problemet är när ett tal-fält i käll-tabellen är tomt så stannar min loop och jag får felmeddelandet "Syntax error in INSERT INTO statement".

Har ingen större lust o göra en massa If Then Else satser eftersom det rör sig om ca 100 fält i tabellen.

Databasen är en Access 2000 och talfälten är inställda så att dom inte är obligatoriska.

Ett ex. på hur koden ser ut

' öppnar upp käll tabellen och loppar igenom den
Do Until Rs.Eof
SQLStmt = "INSERT INTO tblCars"
SQLStmt = SQLStmt & "(strMake,intPrice,intTax)"
SQLStmt = SQLStmt & " VALUES('"& Rs("strMake") &"' , "& Rs("intPrice") &" , "& Rs("intTax") &")"
Conn.Execute(SQLStmt)
SET SQLStmt = Nothing
Rs.MoveNext
Loop

Om tex. Rs("intPrice") är tomt så får jag felmeddelandet...

Kan man känna av om Rs("intPrice") ="" och lägga till NULL istället?
Nån som vet hur man löser problemet?

Medlem sedan dec. 19998 577 inlägg
#2

Lättast är väl om du ställer in att du får ha nullvärden i databasen.

Men du borde kunna fuska såhär:

' öppnar upp käll tabellen och loppar igenom den
Do Until Rs.Eof
SQLStmt = "INSERT INTO tblCars"
SQLStmt = SQLStmt & "(strMake,intPrice,intTax)"
SQLStmt = SQLStmt & " VALUES('"& Rs("strMake") &"' , "& ccur( "0" & Rs("intPrice") ) &" , "& cdbl( "0" & Rs("intTax") ) &")"
Conn.Execute(SQLStmt)
SET SQLStmt = Nothing
Rs.MoveNext
Loop
Medlem sedan aug. 2002536 inlägg
#3

Kan tyvärr inte använda den lösningen eftersom den lägger till "0" i tabellen. Om inte käll-tabellen har nåt värde så får inte mål-tabellen få nåt värde.

Jag har satt kriteriet att tal-fälten får ha nollvärden, men det funkar inte ändå...

Medlem sedan juni 200032 967 inlägg
#4

I så fall får du kolla med if-satser och lägga till null i SQL-frågan. Det går ju att göra något sånär enkelt med en liten funktion.

Function f(value)
     value = "" & value
     if value = "" then value = "null"
     f = value
End function

I SQL-frågan:

SQLStmt = SQLStmt & " VALUES('"& f(Rs("strMake")) &"' , "& f(Rs("intPrice")) &" , "& f(Rs("intTax")) &")"

Kanske?

Medlem sedan aug. 2002536 inlägg
#5

Perfekt....

Funkar precis så som jag ville ha det.

Tackar

Medlem sedan juni 200032 967 inlägg
#6

Så trevligt. Kul att kunna hjälpa till!

Mvh,

255 ms totalt · 4 externa anrop · v20260731065814-full.6fe65c25
124 ms — deklarationer (db)
0 ms — hämta statistik (cache)
128 ms — hämta tråd, inlägg och bilagor (db)
124 ms — ändringar (db)