Avatar billede fredslund Nybegynder
16. februar 2003 - 14:19 Der 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;

Håber I kan hjælpe mig!
Avatar billede stoney Nybegynder
16. februar 2003 - 14:32 #1
hvis dit id felt er et autoinc felt skal du ikke udfylde det selv.
Det klare din database selv.

Stoney
Avatar billede fredslund Nybegynder
16. februar 2003 - 14:38 #2
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 :-)
Avatar billede dkn Nybegynder
16. februar 2003 - 19:45 #3
det ser rigtigt nok ud hvad du gør, men prøv evt med instert istedet for append:

    db.Insert;
    db.Fields[1].AsString := DBEdit2.Text;
    db.Fields[2].AsString := DBEdit3.Text;
    db.Post;
Avatar billede fredslund Nybegynder
16. februar 2003 - 19:56 #4
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....
Avatar billede dkn Nybegynder
16. februar 2003 - 20:36 #5
hvordan ser din connection string ud?
jeg plejer at bruge Microsoft.Jet.OLEDB.4.0

eksempel:
  DB.ConnectionString := 'Provider=Microsoft.Jet.OLEDB.4.0;Data Source=db.mdb;Persist Security Info=False';
  DB.CommandText := 'Select * from users';
  DB.Open;
  DB.Insert;
  DB.Fields[0].AsString := edit1.Text;
  DB.Fields[1].AsString := edit2.Text;
  DB.Post;
Avatar billede fredslund Nybegynder
16. februar 2003 - 20:52 #6
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 :-)
Avatar billede pniels12 Nybegynder
18. marts 2003 - 15:37 #7
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.
Avatar billede fredslund Nybegynder
22. april 2003 - 20:29 #8
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!
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
Kurser inden for grundlæggende programmering

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