Autor Beitrag
Gambit
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 05.06.03 18:02 
Hallo,

ist wahrscheinlich ganz einfach aber ich komm nicht drauf. Ich benutze in meiner DB den Navigator. Wenn ich nun einen Datensatz hinzufügen möchte, wird er immer vor den Datensatz geschrieben, vor dem sich gerade der Datensatzzeiger in der DBGrid befindet. Ich möchte aber einen neuen Datensatz grundsätzlich immer an den Schluss der Tabelle hängen. Wie kann ich das bewerkstelligen?

Gruß

Gambit
grayfox
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 800

win98, winXP
D4 Standard; D6 Personal
BeitragVerfasst: Do 05.06.03 19:14 
hallo gambit!

komisch, komisch.. ;)
fügst du vielleicht mit dem '+' zeichen einen eintrag vor deinem letzten ein und dorthin schreibst den datensatz?
versuch mal nur auf das hakerl zu drücken, dann sollte dein datensatz an letzter stelle stehen.
ausser du hättest einen index definiert, dann würde der datensatz gleich richtig einsortiert, aber das scheint ja bei dir nicht der fall zu sein...

mfg, stefan
Gambit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 05.06.03 19:29 
Das versteh ich jetzt nicht, was meinst du denn mit hakerl? Indezes hab ich allerdings auch, das stimmt.

Gambit
hwb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91

Win98 SE, Win2000
D5 Prof
BeitragVerfasst: Do 05.06.03 21:34 
Dein Fehler ist anscheinend:
Du glaubst was du siehst.

Wenn du in Navigator auf das + - Zeichen klickst wird im Grid Platz gemacht für einen neuen Datensatz. Wie du richtig bemerkt hast vor dem aktuellen.
Geschrieben wird der Datensatz in die Tabelle aber erst, wenn du im Navigator auf ÜBERNEHMEN (das Hakerl) klickst. Dann wird der Datensatz erst in die Tabelle geschrieben. Hast du eine Tabelle ohne Index, landet er hinten in der Tabelle, ansonsten wird er dem Index entsprechend ANGEZEIGT.

HWB
Gambit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Do 05.06.03 23:01 
Bei mir ist das nicht so. Hab mal alle Indezes rausgenommen und wenn ich mir die reine Tabelle anschaue, werden die Datensätze nicht hinten drangehängt. Das ist vielleicht so bei einer TTable aber anscheinend nicht bei einer TQuery.

Gambit
hwb
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 91

Win98 SE, Win2000
D5 Prof
BeitragVerfasst: Fr 06.06.03 06:57 
Bei mir hängen alle ein- bzw. angefügten Datensätze hinten.

Vielleicht erzählst du mal komplett mit was du arbeitest ums evtl. nachvollziehen zu können.

HWB
Maggi
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 160

WIN XP, WIN 2003
D5 Enter D 2006
BeitragVerfasst: Fr 06.06.03 10:14 
Hi,

also ich denke das ist nur ein visuelles Problem.

Nachdem du den Hakerl :wink: gedrückt hast ist der Datensatz der letzte nur das Grid macht keinen automatischen Refresh.
Versuche doch mal ein Grid.Refresh, dann sollte das Problem verschwinden. Wie gesagt, vorrausgesetzt du hast wirklich keinen index auf!!

gruß

Maggi :D
Gambit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Fr 06.06.03 13:45 
es ist kein Index vorhanden und wenn ich mir die Tabelle mit der Datenbankoberfläche angucke, sind die Sätze eingefügt. Ganz ehrlich!! Könnte höchstens sein, dass es daher kommt, dass ich die DB, befor ich editieren kann entsperren muss und da gibt es eine Routinen,wo ich mir vorstellen könnte, dass es daran liegt:

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
id :=Query1.FieldbyName('Nummer').AsInteger; //Position merken
  Query1.Active:= false;
  if CheckBox1.Checked= true then
    Begin
      Query1.RequestLive  := false;
      Query1.Active := false;
      Query1.SQL.Strings[1]:= '';
      Query1.Active := true;
      Button2.Enabled := false;
   End
   else
    Begin
       Query1.RequestLive := true;
       Query1.Active := false;
       Query1.SQL.Strings[1]:= '';
       Query1.Active := true;
       Button2.Enabled := true;
    End;
  Query1.Active:= true;
  query1.locate ('Nummer',Variant(id),[]); // Position wiederherstellen



Die Routine ist noch nicht ganz fertig, funzt aber soweit schon. Vielleicht liegt es ja an dem Positionsmerker bzw Wiederhersteller...

Gruß und Danke

Gambit
neojones
ontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic starofftopic star
Beiträge: 1206
Erhaltene Danke: 1



BeitragVerfasst: Fr 06.06.03 14:13 
Das ist doch kein visuelles Problem!!!

Table1.Insert fügt über dem Datensatz an, der gerade den Cursor hat, Table1.Append fügt am Ende an und verschiebt den Cursor dahin.

DBNavigator führt standardmäßig Insert aus.

Viele Grüße,

Matthias

_________________
Ha! Es compiliert! Wir können ausliefern!
Gambit Threadstarter
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 36



BeitragVerfasst: Fr 06.06.03 15:20 
Aha! Gut, ich schmeiß den Navigator raus und bastele mir eigene Buttons.

Besten Dank