Avatar billede FewCastle Praktikant
07. november 2013 - 14:47 Der er 10 kommentarer og
1 løsning

Indsæt NULL i felt (numeric(18,0)

Jeg har 5 input felter i min asp.fil som skal indsættes i MS SQL.

<INPUT TYPE=number name=bogfort>

som det kan ses er det felter med regnskabsdata.

Når data skal opdateres henter jeg mine værdier fra formen med:
Request.Form("bogfort")

Databasen opdateres sådan:
SQL = "INSERT INTO LF_Regnskabsdata (regnskab,resultat) VALUES ('"&regnskab&"','"&resultat&"')"
Dette er blot et lille udsnit af SQL´en.

I databasen har jeg sat mine regnskabsfelter til "numeric(18,0)" samt Allow Nulls. Når SQL´en udføres kommer følgende fejl:

Microsoft OLE DB Provider for ODBC Drivers
error '80040e07'
[Microsoft][ODBC SQL Server Driver][SQL Server]Der opstod fejl under konvertering af datatypen varchar til numeric.

Hvis felterne indeholder tal insættes data fint i tabel. Problemet opstår når felterne er tomme. Jeg vil blot have at den indsætter "NULL" i feltet.

Har kæmpet en del med det, så håber virkelig der er en som kan komme med den rette medicin.

På forhånd tusind tak.
Avatar billede Slettet bruger
07. november 2013 - 15:07 #1
SQL laver en konvertering fra tekst til tal og her er der ikke bruges NULL (tom stregng).

Har du prøver blot at undlade ping'er (') om &resultat:

SQL = "INSERT INTO LF_Regnskabsdata (regnskab,resultat) VALUES ('"&regnskab&"',"&resultat&")"
Avatar billede FewCastle Praktikant
07. november 2013 - 15:11 #2
Det har jeg skam prøvet og det vil asp ikke være med til, følgende fejl kommer:

[Microsoft][ODBC SQL Server Driver][SQL Server]Syntaksen er forkert i nærheden af ')'.
Avatar billede arne_v Ekspert
07. november 2013 - 15:37 #3
Hvis du vil have at der skal indsaette NULL saa skal du vil indsaette NULL??

SQL = "INSERT INTO LF_Regnskabsdata (regnskab,resultat) VALUES (" & iif(regnskab<>"", regnskab, "NULL") & "," & iif(resultat<>"", resultat, "") & ")"
Avatar billede FewCastle Praktikant
07. november 2013 - 15:53 #4
Feltet i tabelen er jo af typen "Numeric(18,0)" så der må ikke indsættes tekst...kun tal.
Hhmmm...godt nok noget der driller en del...bare fordi feltet er tomt.
Avatar billede arne_v Ekspert
07. november 2013 - 16:05 #5
#3 har en fejl - jeg havde glemt det sidste NULL. Det skal vaere:

SQL = "INSERT INTO LF_Regnskabsdata (regnskab,resultat) VALUES (" & iif(regnskab<>"", regnskab, "NULL") & "," & iif(resultat<>"", resultat, "NULL") & ")"
Avatar billede FewCastle Praktikant
07. november 2013 - 20:09 #6
Du skriver

iif(regnskab<>"", regnskab, "NULL")

Jeg kender ikke iif funktionen og jeg får fejl hvis jeg benytter den, så min IIS kender ikke iif.

Hvordan kan den egentlig være at det er så stort et problem med et tomt felt som skal ind i et numeric felt?
Avatar billede arne_v Ekspert
07. november 2013 - 20:26 #7
Jeg checkede lige - VBA, VB6 og VB.NET har alle iif, mens VBS (som ASP bruger) har ikke.

Men saa maa du lave lidt mere kode.

Saa svaert er det trods alt at kode.

Og det har ikke noget med numeric at goere, men hvis du vil have et NULL ind saa skal du angive et NULL.
Avatar billede FewCastle Praktikant
08. november 2013 - 08:20 #8
Kan du guide mig i den rigtige retning, for jeg er totalt blank. Træls at det skal være så besværligt.
Avatar billede FewCastle Praktikant
08. november 2013 - 09:45 #9
Har lige lavet data typen om fra Numeric(18,0) til varchar(30). Nu indsættes der intet hvis der heller ikke står noget i regnskabsfelterne...og det er jo det positive.
Men hvad går jeg klip af ved at data typen er ændret?
Avatar billede FewCastle Praktikant
08. november 2013 - 10:43 #10
Så er den fixet.
Den lå i min
if Request.Form("regnskab") = "" then regnskab = "NULL" else regnskab = Request.Form("regnskab")

og i min
INSERT INTO

Så nu virker det...tak for hjælpen.
Svare du.
Avatar billede arne_v Ekspert
09. november 2013 - 01:19 #11
kommer her
Avatar billede Ny bruger Nybegynder

Din løsning...

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.

Loading billede Opret Preview
Kategori
Computerworld tilbyder specialiserede kurser i database-management

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester