01. juli 2003 - 14:40Der er
13 kommentarer og 1 løsning
insert med commands (stored procedure)
Er ved at lave en side der indsætter data i flere forskellige tabeller og nogle gange flere records i samme tabel. Siden får værdierne fra en helt almindelig formular på forrige side. Problemet er at hvis et af felterne ikke er udfyldt svigter inserten, der kommer en fejl der siger:
Microsoft OLE DB Provider for ODBC Drivers error '80040e07'
[Microsoft][ODBC Microsoft Access Driver] Data type mismatch in criteria expression.
/Admin/SalesCompanies/productlinetranslateinsert.asp, line 84
Det er vel bare en eller anden lille ting i koden der skal sige at hvis den ikke får nogen værdi fra den foregående side skal den ikke indsætte men hvordan?? er ikke så skarp til håndkodning.
if(Request.Form("ProductLineID") <> "") then Command1__LINE = Request.Form("ProductLineID")
Du checker for om feltet er tomt men der er ingen action hvis det er tomt. Du kunne f.eks lave en linie
if(Request.Form("ProductLineID") <> "") then Command1__LINE = Request.Form("ProductLineID") else error = true end if
Og inden du begynder din opdatering af databasen checke om Error er false.
Dette er i midlertidigt ikke særligt bruger venligt da du ikke fortæller brugeren hvor han laver fejl. Så du kunne lave chec på formularen ved hjælp af javascript. Den sidste er en større omskriv ning hvorimod den der bare giver fej er let at implementere men hvad skal den gøre efter visen den tomme form igen?
Det handler om at nogle produkt linier har nogle komponenter. Det er imidlertid ikke sikkert at det er alle linier har 10 komponenter (der er 10 komponent felter på forrige side, har kun 3 med i koden indtilvidere) så derfor skal formularen virke selvom nogle felter er tomme, der skal bare ikke sættes noget ind i databasen.
Har fundet ud af at jeg er en tumpe! Det er slet ikke ovenstående der er problemet. Gik siderne efter i sømmene og fandt ud af at det der skaber problemet er at der på forrige side er et hidden field som skal indsættes. Værdien til dette felt kommer fra databasen, men igen, det er ikke sikkert at den får en værdi, så hvis den ikke får en værdi skal den indsætte værdien 0 (lige nu melder den fejl i de tilfælde hvor ingen værdi bliver indsat). Skal jeg mon lave det som en function?? eller hvordan kan jeg ellers lave det?? poster lige et nyt spørgsmål om det...vil du i øvrigt ikke have nogle point for din hjælp???
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.