Toon posts:

[Delphi] Overwrite Record

Pagina: 1
Acties:

Verwijderd

Topicstarter
Mensen,

Wanneer ik een simpel databaseje maak door middel van records, zo dus:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
  AssignFile (Klnt_lst_best, Klnt_lst_bestnaam);
  Reset (Klnt_lst_best);

  Aantal := FileSize (Klnt_lst_best);
  Seek (Klnt_lst_best, Aantal);

    with Klanten_lijst do begin
      Klantnr := Edit1.Text;
      Naam := Edit2.Text;
      Adres := Edit3.Text;
      Postcode := Edit4.Text;
      Plaats := Edit5.Text;
      Telnr := Edit6.Text;
      Faxnr := Edit7.Text;
      Email := Edit8.Text;
    end;

      Write (Klnt_lst_best, Klanten_lijst);


En ik wil daar nu bijvoorbeeld 'klantnr' 2 iets veranderen dan doe ik dat op deze manier waarbij het foutgaat:

code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
  AssignFile (Klnt_lst_best, Klnt_lst_bestnaam);
  Reset (Klnt_lst_best);

  a := -1;

While not eof (Klnt_lst_best) do begin
  read (Klnt_lst_best, Klanten_Lijst);
  a := a + 1;
    If Klanten_Lijst.Klantnr = Edit1.Text
    Then Begin
      Reset (Klnt_lst_best);
      Seek (Klnt_lst_best, a);
      Save_Klnt_Geg (Klanten_Lijst);
      Write (Klnt_lst_best, Klanten_Lijst);
    end;
end;


Save_Klnt_Geg:
code:
1
2
3
4
5
6
7
8
9
10
11
12
13
Procedure Save_Klnt_geg(Klanten_Lijst : TKlanten_Lijst);
Begin
  With Klanten_Lijst do begin
    Klantnr := Form1.Edit1.Text;
    Naam := Form1.Edit2.Text;
    Adres := Form1.Edit3.Text;
    Postcode := Form1.Edit4.Text;
    Plaats := Form1.Edit5.Text;
    Telnr := Form1.Edit6.Text;
    Faxnr := Form1.Edit7.Text;
    Email := Form1.Edit8.Text;
  end;
End;


Want wat gebeurd er nu. Hij leest de record, veranderd de record en plakt het achter aan de rij vast. Dus dan heb je zeg maar 2 dezelfde records maar bij 1 is dus hetgeen veranderd wat je wilde veranderen.

Het punt is nu dat ie dus geen duplicatie moet maken van de record maar gewoon het hele record wat veranderd moet worden overschrijft!

Hoe kan ik dit handig op lossen?

  • klinz
  • Registratie: Maart 2002
  • Laatst online: 10-08 15:44

klinz

weet van NIETS

Gebruik eens Rewrite() ipv Reset()

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

Is het geen idee om met de database desktop van Delphi gewoon een .db-bestandje in elkaar te flatsen? Je hebt dan gewoon een tabel zoals je die bijvoorbeeld ook in een database hebt. Die kun je dan veel makkelijker aanspreken met behulp van de componenten TTable of TADOTable. Je kunt dan ook zoeken, sorteren, queries loslaten op je data. Dat lijkt me een stuk makkelijker en overzichtelijker werken. En een .DB-tabel is echt zo in elkaar gedraaid: 3 minuten werk!

My personal website


Verwijderd

Topicstarter
OZ-Gump schreef op 14 januari 2003 @ 09:32:
Is het geen idee om met de database desktop van Delphi gewoon een .db-bestandje in elkaar te flatsen? Je hebt dan gewoon een tabel zoals je die bijvoorbeeld ook in een database hebt. Die kun je dan veel makkelijker aanspreken met behulp van de componenten TTable of TADOTable. Je kunt dan ook zoeken, sorteren, queries loslaten op je data. Dat lijkt me een stuk makkelijker en overzichtelijker werken. En een .DB-tabel is echt zo in elkaar gedraaid: 3 minuten werk!
Hmm dat is idd wel een idee natuurlijk maar niet een antwoord op de vraag. :)

  • OZ-Gump
  • Registratie: November 2002
  • Laatst online: 25-08 14:38

OZ-Gump

terug van weggeweest

OK dan, even verder op je vraag: als wat voor variabele is je bestand gedefinieerd? Als je namelijk een textbestand gebruikt, wil dat niet helemaal lekker werken met de Seek-functie. Kijk bijvoorbeeld maar eens in de help van Delphi:
Seek Moves the current position of a typed or untyped file to a specified component. Not used with text files.
Waarom heropen je het bestand trouwens? Volgens mij kun je dan beter op het moment dat je de goede klant gevonden hebt die regel overschrijven met de nieuwe gegevens.

My personal website