Avatar billede madiedk Nybegynder
09. august 2010 - 12:13 Der er 10 kommentarer og
1 løsning

Insert null value i oracle database via vba ado

Hej

Jeg har 25 kolonner i et excel ark jeg gerne vil indsætte i en oracle database.
Mit problem er at hvis der i nogle af kolonnerne er tomme felter så fejler min insert into sql.
Min sql ser f.eks. sådan ud (simpel udgave):
    rapCon.Execute ("INSERT INTO tb_hovedtal_test (PERIODENS_AFKAST_PROCENT) values (" & Cells(i, 2) & ")")

hvis så der kommer en række hvor der ikke er nogle værdi siger den:
"ora_00936-manglende udtryk"

Hvordan fixer jeg det
Avatar billede teepee Nybegynder
09. august 2010 - 12:57 #1
Hmm, det ser ellers fint ud. Må du indsætte null i feltet? Er det ikke krævet måske? Er der kun én kolonne i tabellen?
Avatar billede teepee Nybegynder
09. august 2010 - 12:58 #2
Tror at du skal bruge enkeltplinger i values ' ikke "
Avatar billede madiedk Nybegynder
09. august 2010 - 13:53 #3
der er 25 kolonner, har bare kun taget 1 med i eksemplet.
Avatar billede teepee Nybegynder
09. august 2010 - 15:22 #4
Så er problemet at to dobbeltplinger lige efter hinanden betyder noget andet og dermed afbrydes din statement midt i det hele. Det har altså intet med selve din streng at gøre, men fortolkningen af den efterfølgende. Jeg er ret sikker på at du slipper for problemet hvis du udskifter de inderste dobbeltplinger med enkeltplinger.
Avatar billede madiedk Nybegynder
09. august 2010 - 15:45 #5
hvis jeg jeg en msgbox på min sql string så er værdien bare tom, men hvis jeg skal indsætte en null værdi i en database skal jeg jo skrive null.
for at lave et eksempel:

den her virker ikke:

insert into tb_test (por) values()

men den her gør

insert into tb_test (por) values(null)

og hvis jeg skriver bare tager en cells(1,1) hvor cellen er tom, så står der jo "" og ikke null?

håber du forstår
Avatar billede teepee Nybegynder
10. august 2010 - 12:23 #6
Denne her skulle meget gerne også virke:
insert into tb_test (por) values('')
I oracle er '' og NULL det samme.
Avatar billede madiedk Nybegynder
10. august 2010 - 19:12 #7
det er helt rigtigt, men der her virker stadig ik
insert into tb_test (por) values()

den her gør ganske rigtigt.

insert into tb_test (por) values('')
Avatar billede teepee Nybegynder
11. august 2010 - 15:16 #8
Det betyder jo så at hvis du laver de to inderste dobbeltplinger om til enkeltplinger skulle din kode virke og danne den korrekte insert statement uanset om cells(x,y) giver en værdi eller ej.
Avatar billede madiedk Nybegynder
11. august 2010 - 22:43 #9
hvis jeg skriver:
rapCon.Execute ("INSERT INTO tb_hovedtal_test (PERIODENS_AFKAST_PROCENT) values (' & Cells(i, 2) & ')")

så tager den cells(i,2) som tekst og ikke selve værdi af cells(i,2)
Avatar billede madiedk Nybegynder
11. august 2010 - 22:47 #10
har dog lige fundet du af hvis jeg skriver
rapCon.Execute ("INSERT INTO tb_hovedtal_test (PERIODENS_AFKAST_PROCENT) values ('" & Cells(i, 2) & "')")

så virker det umiddelbart.
Avatar billede madiedk Nybegynder
02. januar 2011 - 22:18 #11
lukker, tak for indsats
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