18. februar 2010 - 23:26Der er
11 kommentarer og 1 løsning
Delphi, indsætte SQL med datoer
Davs.
Jeg forsøger manuelt at indsætte en post i min database med komponenten TIBSQL.
Jeg har brugt nedenstående procedure
---
procedure TfrmOpretNy.btnOKClick(Sender: TObject); var Aar : string[50]; Primo, Ultimo: TDate; begin Aar := edtAar.Text; Primo := strToDate(edtPrimo.Text); Ultimo := strToDate(edtUltimo.Text); IBSQL1.Close; IBSQL1.SQL.Clear; IBSQL1.SQL.Text := 'INSERT INTO regnskabsaar VALUES (0, '''+Aar+''', '+DateToSTr(Primo)+', '+DateToSTr(Ultimo)+', ''Åben'')'; IBSQL1.ExecQuery; end;
Kan I umiddelbart se en fejl i ovenståendekode. Jeg har nørklet lidt frem og tilbage, hvor jeg har fået diverse exceptions, som jeg løbende har tilrettet indtil ovenstående kode, hvor jeg nu får en exception, som jeg ikke kan gennemskue.
"Conversio error from string "-2010"
I ovenstående exception har jeg indtastet "01-01-2010" som eksempel i edtPrimo.
Vælger jeg at skrive "01-01-1999" bliver exceptionen: "Conversio error from string "-1980" og vælger jeg at skrive "01-01-10" bliver exceptionen ligeledes som i første eksempel "Conversio error from string "-2010"
Findes der i øvrigt et godt sted på nettet, hvor der beskrives, hvordan man arbejder med datoer i Delphi. Jeg tænker, om man kan komme ud for problemer omkring datoformater, punktummer, bindestreger m.v. samt hvordan man validerer datoer, beregner hvilken dato der kommer først og om en dato kommer LIGE efter en anden.
Arne: IBSQL og IBDataset har ingen PARAM property som IBQuery (så vidt jeg lige kan se).
Jeg har overvejet at bruge IBQuery i stedet, men ahr forgæves googlet efter dokumentation og tutorials på, hvordan jeg kan bruge det. HAr du et godt link?
mortvader: Det gav ingen effekt at ændre til din kode. JEg skal ikke kunne sige hvorfor.
Jeg har ikke fundet løsningEN, men fundet EN løsning :)
HAr valgt at ænde hele problemstillingen, vælge andre komponenter til at kalde tildatabasen osv, så ovenstående forudsætninger for problemet holder ikke længere. :o)
og i faretn glemte jeg at skrive, hvad det så var, jeg havde gjort.
I stedet for at lave indtastningsfelter, hvis indhold bliver integeret i min SQL insert sætning, så har jeg valgt at indsætte en linie og derefter tilknytte DataAware komponenter til og skrive til posten efter indsættelse i stedet for før. Håber det gav mening.
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.