Avatar billede agg-zeus Nybegynder
06. marts 2004 - 17:13 Der er 4 kommentarer og
1 løsning

Sætte data ind i MS Access database

Nu har jeg søgt og kigget rundt på nettet for at finde ud af hvordan jeg får sat data ind i en database, og egentlig også hvordan man får det ud igen... Men jeg forstår ikke noget af det jeg har fundet! Jeg er newbie til det med databaser!
Så mine spørgsmål er:

1: Hvordan connecter man, helt konkret, vha. ADO ?
2: Hvordan sætter man data ind i databasen fra en editboks ?
3: Hvordan hiver man data ud igen ?
Avatar billede hrc Mester
06. marts 2004 - 17:47 #1
Du skal bruge en TADOConnection og dertil hørende TADOTable og/eller TADOQuery. Du skal sætte et ODBC-alias op så TADOConnectionen kan hitte .mdb filen.

På XP Pro US (den kører jeg) sættes alias'et op via kontrol-panelet, Administrative tools, Data sources ODBC. Her vælger du Add, Microsoft Access driver og trykker Finish. I Data source name angiver du aliaset og i vha. Select-knappen angiver du stieen til mdb-filen.

Det var ODBC.

I Delphi placerer du en TADOConnection på en form, klikker på '...' knappen for ConnectionString og vælger Build. Under Provider vælger du "Microsoft OLE DB Provider for ODBC Drivers" og trykker next. I "Data source name" vælger du det alias du lavede og trykker "Test connection". Hvis det gik godt, så er forbindelsen i orden og du kan lukke dialogen.

Nu skal du have koblet en TADOTable på og her skal du sætte Connection (TADOConnection) og vælge hvilken tabel du vil arbejde med.

I formens OnCreate og OnDestroy plejer jeg hhv. at åbne(og lukke forbindelsen: ADOConnection.Open og ADOConnection.Close.

Ved større programmer flytter jeg ADOConnection over på en TDataSource. Hvis du vil lege med SQL i stedet, så hedder det TADOQuery eller TADOCommand.

Nu mangler du kun at tilføje en TDataSource og en TDBGrid og hægte det sammen med ADOTablen for at være kørende.

Når du skal rette data i en tabel:

ADOTable1.Edit;
ADOTable1.FieldByName('Navn').AsString := 'Gert';
ADOTable1.Post;

Her rettes navnet for den record som ADOTable1 står på. Du kan gennemløbe en tabel sådan her:

ADOTable1.First;
while not ADOTable1.EOF begin
  Memo1.Lines.Add(ADOTable1.FieldByName('Navn').AsString);
  ADOTable1.Next;
end;

... og sådan kan man blive ved. Jeg kan kun anbefale dig at prøve at læse hjælpeteksten og se hvilke metoder og properties som TADOTable har. Der er i øvrigt næsten ingen forskel fra den "gamle" BDE TTable, så hjælp der vil også være brugbart.
Avatar billede hrc Mester
06. marts 2004 - 17:51 #2
Vil du indsætte en ny record så kan du gøre det sådan her:

ADOTable1.AppendRecord([CustNoEdit.Text,CoNameEdit.Text, AddrEdit.Text, Null, Null, Null, Null, Null, Null, DiscountEdit.Text]);

Tilsvarende er der en ADOTable1.Delete når records skal slettes.

Prøv at lave en simpel database, men nogle simple tabeller og begynd at eksperimentere. Held og lykke
Avatar billede agg-zeus Nybegynder
06. marts 2004 - 18:23 #3
burde det her så ikke tilføje til databasen:

ADOConnection1.Open;

ADOTable1.AppendRecord([editdato.text,inttostr(combotime.itemindex)+':'+
                        inttostr(combominut.itemindex),editos.text,memobesked.text]);

ADOConnection1.Close;

? den siger noget med at den ikke kan tilføje til et lukket dataset ! men jeg har da sagt at den skal åbne det ?!
Avatar billede hrc Mester
06. marts 2004 - 19:15 #4
Har du sat ADOTable.Connection = ADOConnection? Har du sat ADOTable til active (vil også sætte ADOConnection aktiv (Open) hvis den mangler)?

I øvrigt så vil ADOTable.Close (a.k.a. ADOTable.Active := false) ikke lukke ADOConnection, så det må du huske at gøre i din OnDestroy.
Avatar billede hrc Mester
06. marts 2004 - 19:20 #5
Jeg var selv lidt i tvivl om man skulle Post'e en AppendRecord, men det er ikke nødvendigt.

Du kan nemlig også indsætte en record på denne måde:

ADOTable1.Insert; // eller ADOTable1.Edit ved rettelser
ADOTable1.FieldByName('Id').AsInteger := 1;
ADOTable1.FieldByName('Navn').AdString := 'Mogens Camre';
ADOTable1.Post;
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