Autor Beitrag
OnkelSchorsch
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 09.01.10 19:01 
Servus zusammen, dann will ich mal meine erste Frage in dem Forum hier formulieren.

Es geht um ein Datatable, wie im Bild gezeigt.

Wenn ich einen Datensatz lösche (im bsp. 3) und anschließend einen neuen Datansatz mit aber pnr-3 hinzufüge, so ist dieser neue Datensatz am Ende das Datatables.

Jetzt möchte ich das ganze wieder sortieren, natürlich nach dem Feld 'PNR'.

Ich habe schon verschiedene Möglichkeiten durchprobiert, aber leider nichts passendes gefunden.

Hat hier jemand eine Idee zu?



So, und jetzt meine nächste Frage, die passt zwar nicht genau in den Unterforum, aber eigentlich sollte das keine
große Sache sein.
Es geht darum, dass ich die prozedur "menue_item9_click" nicht nur durch das klick-ereignis des Buttons ausführen will, sondern auch an anderer Stelle automatisch aufrufen möchte:

Zitat:
procedure TWinForm.MenuItem6_Click(sender: System.Object; e: System.EventArgs);
begin
if Datagrid1.visible = true then begin
MenuItem9_Click;
Textbox4.Visible:= true;
Textbox1.Visible:= true;


wenn ich es wie oben mache, dann kommt der Fehler "zu wenig parameter".
übernehme ich aber die Parameterliste aus der Orginalen-Prozedur 1 zu 1, bekomme ich ganz viele Fehler: "klammer erwartet, END erwartet usw usw usw

Kann mir da jemand helfen? oder kann man diese prozeduren NUR durch das klick ereignis auf den jeweiligen Button auslösen.


danke schonmal
Einloggen, um Attachments anzusehen!
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 09.01.10 19:08 
Bitte stelle nur eine Frage je Thread. Dies erhöht die Übersicht - gerade, weil es hier unterschiedliche Themenbereiche angeht. Dazu werden die Mods aber sicherlich noch was sagen ... Auch die Nutzung von Delphi- und anderen Code-Tags (statt Zitaten) erhöht die Übersicht.

Daher hier auch nur die Antwort auf die erste Frage:
Wenn du die Tabelle physikalisch sortiert haben möchtest, nimmst du am besten eine TQuery und führst:
ausblenden SQL-Anweisung
1:
ALTER TABLE Zieltabelle ORDER BY Spalte					

darauf aus.

Ansonsten schaust Du dir am besten mal die Sort-Geschichten zur TDataset\TDataSource an.

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
OnkelSchorsch Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Sa 09.01.10 19:29 
ok, Danke für die Aufklärung.

Leider hat mir das nicht viel geholfen, da ich das ohne SQL machen möchte.

Die "sort" prozeduren habe ich leider nicht, keine ahung warum, liegt vielleicht daran dass ich Borland developer studio 2006 verwende. Und wie ich mit dem Tquery umgehen soll weiß ich auch nicht.

Ich dachte eben dass ich eine prozedur finde die z.b. lauten könnte:
Datentabelle.rows.sort ('PNR')
oder
Datentabelle.sort ('PNR')

aber es gibt leider nichts was passt gefunden.

Falls es nur mit der SQL anweisung funktioniert, wie genau muss ich diese einbinden, wenn ich die wie beschrieben 1zu1 übernehme, bekomme ich eine menge fehler.

Sorry, bin nicht so der Spezialist :(
BenBE
ontopic starontopic starontopic starontopic starontopic starontopic starhalf ontopic starofftopic star
Beiträge: 8721
Erhaltene Danke: 191

Win95, Win98SE, Win2K, WinXP
D1S, D3S, D4S, D5E, D6E, D7E, D9PE, D10E, D12P, DXEP, L0.9\FPC2.0
BeitragVerfasst: Sa 09.01.10 19:45 
Soweit ich das sehe, geht es nur, wenn man das in der Query selber mit angibt.

Zum Umgang mit der TQuery einfach mal hier im Forum umgucken. Grob gesagt: Verbindung für Query setzen, in SQL.Text deinen Query-String setzen und dann mit Execute die Query ausführen (bei SELECT mit Active := True;).

_________________
Anyone who is capable of being elected president should on no account be allowed to do the job.
Ich code EdgeMonkey - In dubio pro Setting.
AXMD
ontopic starontopic starontopic starontopic starontopic starontopic starofftopic starofftopic star
Beiträge: 4006
Erhaltene Danke: 7

Windows 10 64 bit
C# (Visual Studio 2019 Express)
BeitragVerfasst: Sa 09.01.10 22:32 
Hallo,

bitte erstelle für jede deiner Fragen ein separates Topic, da die Diskussion mehrerer Fragen in einem Topic für gewöhnlich für Verwirrung und Durcheinander sorgt.

Viele Grüße,
AXMD
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Mo 11.01.10 15:30 
Also erst mal muss ich mich natürlich den anderen anschließen: Eine Frage pro Topic/Thema...
auch wenn das mir auch nicht immer einfach fällt, weil die beiden Themen ja zum selben Programm gehören.

Zu Deinem MenuItem9_Click:
Da musst Du doch einfach auch nur die Parameter übergeben, die Du im MenuItem6_Click auch empfangen hast - also einfach nur:
ausblenden Delphi-Quelltext
1:
TWinForm.MenuItem9_Click(Sender,e);					

Damit sollte es dann funktionieren.
OnkelSchorsch Threadstarter
Hält's aus hier
Beiträge: 4



BeitragVerfasst: Mo 11.01.10 20:44 
nein leider funktioniert das so nicht, es werden immer fehler angezeigt.

ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
17:
18:
19:
20:
21:
22:
23:
24:
25:
26:
procedure TWinForm.MenuItem6_Click(sender e: System.EventArgs);
begin
if Datagrid1.visible = true then    begin
  TWinForm.MenuItem9_Click(sender, e);
  Textbox4.Visible:= true;
  Textbox1.Visible:= true;
  Textbox3.Visible:= true;
  Textbox2.Visible:= true;
  Combobox1.Visible:= true;
  Combobox2.Visible:= true;
  datensatz:= SchuelerTAB.NewRow;
  if autoPNR=0 then
      datensatz['PNR']:=SchuelerTAB.Rows.Count+1
  else begin
      datensatz ['PNR']:= autoPNR ;
  end;
  datensatz['Name']:= '';
  datensatz['Klasse']:= 'TSE1';
  datensatz['Profil']:= 'IA';
  SchuelerTAB.Rows.Add(datensatz);
  Bindingmanager.Position:=schuelerTAB.Rows.Count;
end
else
  label1.Visible := True;
  label1.Text := 'Bitte zuerst Verbindung herstellen UND Tabelle wählen!!!';
end;


Ich versteh das auch nicht.
Jetzt wird "e" in zeile 1, "sender" und "e" in zeile 4. sowie das semikolon am ende unterringelt...
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Mo 11.01.10 20:48 
Sind wir hier nun in .NET oder in Delphi?

Na jedenfalls: Vergleich mal die erste Zeile der Prozedur mit der, die du im ersten Post geschrieben hast.
Da hast du wohl ein bisschen an den Parametern rumgelöscht..

Edit:
- Niemals auf =True abfragen
- Rück den Kram mal richtig ein, dann wirst du sehen, dass Zeile 25 immer ausgeführt wird.

_________________
PROGRAMMER: A device for converting coffee into software.
schaumermal
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 72



BeitragVerfasst: Do 14.01.10 22:48 
Also wenn Du die Datensaätze nicht mit einer Query und somit per SQL sortieren lassen willst, dass setzte doch in Deiner Tabelle auf das Feld "PNR" den Primärkey.
Somit sollte die Sortierung automatisch erfolgen.

Gruß
Xentar
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starofftopic star
Beiträge: 2077
Erhaltene Danke: 2

Win XP
Delphi 5 Ent., Delphi 2007 Prof
BeitragVerfasst: Do 14.01.10 23:17 
user profile iconschaumermal hat folgendes geschrieben Zum zitierten Posting springen:
Also wenn Du die Datensaätze nicht mit einer Query und somit per SQL sortieren lassen willst, dass setzte doch in Deiner Tabelle auf das Feld "PNR" den Primärkey.
Somit sollte die Sortierung automatisch erfolgen.

Äh, nein?
Der Primary key gibt doch nur an, dass der Wert eindeutig sein muss, und das danach indiziert werden kann.
Die Sortierung muss man AFAIK selber vornehmen, mit ORDER BY

_________________
PROGRAMMER: A device for converting coffee into software.
ffgorcky
ontopic starontopic starontopic starontopic starontopic starontopic starontopic starontopic star
Beiträge: 573

WIN XP/2000 & 7Prof (Familie:Win95,Win98)

BeitragVerfasst: Sa 16.01.10 21:58 
Also noch einmal zum Thema andere Prozedur aus dieser aufrufen:
Das wäre wesentlich einfacher, wenn Du eine extra Prozedur dafür entwirfst, die Du von diesen beiden Ereignis-Prozeduren aufrufst - also z.B. so (geklaut von hier):
ausblenden Delphi-Quelltext
1:
2:
3:
4:
5:
6:
7:
8:
9:
10:
11:
12:
13:
14:
15:
16:
type
  TMyForm = class(TForm)
  public
  private
    procedure MyProcedure();
  end;

var
  MyForm: TMyForm;

implementation

procedure TMyForm.MyProcedure;
begin
//Hier kommt dann der aus beiden anderen Prozeduren aufzurufende Quelltext rein
end;