16. februar 2003 - 14:19Der er
7 kommentarer og 1 løsning
Indsætte post i database
Hej Eksperter!
- Jeg vil forsøge at erstatte DBNavigatorern med mine egne knapper, - og faktisk går det rigtig fint, - indtil jeg skal gemme en ny post! - Jeg er selvfølgelig forsøgt mig med et utal af muligheder, og umiddelbart gætter jeg på, at jeg skal bruge ttabel.append?? - Men jeg får fejl, når jeg forsøger mig - enten fordi den IKKE vil skrive i ID-feltet (hvilket den jo egentlig heller ikke skal), eller også skriver den, at "Feltet ID skal have en værdi!"???
Min kode ser således ud:
procedure TForm1.Button5Click(Sender: TObject); begin Table1.Append; //Table1.FieldByName('Id').AsInteger := StrToInt(DBEdit1.Text); Table1.FieldByName('DatoTid').AsString := DBEdit2.Text;//evt. med asDatoTime og strToDateTime Table1.FieldByName('Beskrivelse').AsString := DBEdit3.Text; Table1.Post; end;
Det er et auto-id felt... - og jeg er med på, - at det jo også betyder, at databasen selv sætter et nummer ind. Men når jeg forsøger at sætte en post ind, så får jeg en meddelelse der siger, at ID-feltet skal have en værdi?? - Det forstår jeg ikke! - Men det skal lige nævnes, at Delphi er helt nyt for mig, og det kan meget vel være, at den kode jeg har indsat her på eksperten er helt hen i vejret :-)
Desværre - jeg får samme fejl: "Field 'Id' must have a value" - men i min database (Access med ODBC-reference) er ID et felt der dannes med autonummerering....
Ja, jeg ved det dårligt, jeg har brugt Delphis DataSource og Table (som begge findes under DataAccess-fanebladet).. - som så - via lidt opsætning i ObjectInspectoren - virker... - eksempelvis kan jeg problemfrit finde næste post blot ved: Table1.Next - ligesom det lader sig gøre at slette o.s.v. på samme simple vis. Men jeg kan ikke gemme en ny post! Måske skal det med, at det er Delphi 3 jeg bruger.. - og jeg tror ikke jeg gør brug af nogen ConnectionString??? - Så ligger den i hvert fald et sted jeg ikke lige kan finde hen til :-)
Min erfaring med db-komponenter i al almindelighed siger mig at det ikke er vejen at gå. Hvis du vil lave noget der er det mindste professionelt og lidt fremtids sikret, skal du lave din insert og database kommunication i det hele taget ved hjælp af Sql. Det er meget simpelt, og så har du selv helt styr over hvad der sker.
OK, - du får lidt point for rådet, - selvom jeg egentlig stadig godt kunne tænke mig et svar på spørgsmålet. Men jeg har nu (ligesom du/I) løst problemet via SQL, - og ja, - det virker!
Synes godt om
Ny brugerNybegynder
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.