AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Kundenliste

Ein Thema von EdAdvokat · begonnen am 14. Apr 2017 · letzter Beitrag vom 22. Apr 2017
Antwort Antwort
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#1

AW: Kundenliste

  Alt 22. Apr 2017, 09:16
Nochmals Danke. Deine Antwort enthielt mehr als ich erwartet hatte. Ich habe nach dem nochmaligen Durchsehen der Posts viel dazugelernt, vor allem in der Praxis selbst. Die vielen Abhandlungen über die Grundsatzfragen zu OOP sind durchaus verständlich, doch wenn es dann praktisch wird, kommt das Grübeln. Auch hätte ich nie gedacht, dass so ein überschaubares Projekt so viel Potential enthält.
Norbert
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#2

AW: Kundenliste

  Alt 22. Apr 2017, 18:09
es ist mir wirklich peinlich, doch es soll wohl nicht sein. Ich habe nun dem Vorschlag von Hobbycoder folgend die Function:
function RemovefromDB(con: TZConnection):integer; mit einem Rückgabewert Integer ausgerüstet und in Tcustomer aufgenommen. Die Function so geschrieben, wie vorgegeben und beim Aufruf "löschen" ebenfalls den nachfolgenden Code eingefügt:
Delphi-Quellcode:
if lvCustomer.Selected<>nil then
  begin
    CustomerList[lvCustomer.Selected.Index].RemoveFromDB(conMain);
    Customerlist[LVCustomer.Selected.Index].Free;
    CustomerList.Delete(LVCustomer.Selected.Index);
    LVCustomer.Items.Delete(LVCustomer.Selected.Index);
  end;
Also für (DBConnection) den connection aus meinem Programm(conMain) so wie bei LoadFormDB und SaveToDB eingesetzt.
Alles läuft ohne Fehlermeldung durch, doch wenn ich im kompilierten Programm den Button "löschen" betätige meldet er:
Zitat:
"Database connection component ist not assigned"
.
Diese Meldung kommt doch weder bei LoadfromDB noch bei SaveToDB vor, warum klappt das beim Löschen nicht? In diesen beiden Methoden wird doch auch conMain aufgerufen und da klappt es.
Habe dann in der löschen-Routine am Beginn explizit nochmals eine connetion hergestellt, doch auch das bringt nicht den Erfolg -wieder die gleiche Meldung. Wie sollte ich denn welcher Komponente noch was zuweisen? Es gibt die zqrMain (Querry) und die TZConnection.
Irgendwie habe ich das Gefühl, dass es nicht sein soll.
Ich wollte Euch eigentlich nicht mehr nerven, doch andererseits will ich auch zeigen, dass ich mich mit der Sache beschäftige und nicht sofort um Hilfe ersuche. Doch jetzt weiss ich an dieser Stelle wirklich nicht weiter und die Hinweise aus dem I-Net sind auch nicht zielführend.
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#3

AW: Kundenliste

  Alt 22. Apr 2017, 18:24
Was wird mit dem übergebenen Connection-Parameter denn gemacht? Nix. Der war einfach dafür gedacht, dem dynamisch erzeugten Query diese Connection zuzuweisen, aber das muss man dann auch tun. Eigentlich steht genau das ja auch in der Fehlermeldung.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Kundenliste

  Alt 22. Apr 2017, 19:10
Ich poste mal die maßgebliche Procedure löschen:
Delphi-Quellcode:
procedure TFRMMainCustomer.btnDeleteClick(Sender: TObject);//löschen (update)
var zqyMain: TZQuery;
begin
   zqyMain:=TZQuery.Create(nil);
   zqyMain.connection:=conMain;
   if lvCustomer.Selected<>nil then
  begin
    CustomerList[lvCustomer.Selected.Index].RemoveFromDB(conMain);
    Customerlist[LVCustomer.Selected.Index].Free;
    CustomerList.Delete(LVCustomer.Selected.Index);
    LVCustomer.Items.Delete(LVCustomer.Selected.Index);

   {CustomerList.Delete(lvCustomer.Selected.Index); //akt. Datensatz löschen
    CustomerList.SavetoDB(conMain);
    FuelleListView; }

  end;
end;
Also es soll der dynamisch erzeugen querry eine Connection zugewiesen werden. Habe ich das nicht mit zqrMain.connection:=conMain getan?
Es ist mir wieder mal zu schwierig.
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#5

AW: Kundenliste

  Alt 22. Apr 2017, 19:34
Und woher soll die Query, die in RemoveFromDB erzeugt wird, davon wissen?
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
EdAdvokat

Registriert seit: 1. Mai 2016
Ort: Berlin
419 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#6

AW: Kundenliste

  Alt 22. Apr 2017, 20:06
Die removeFromDB-Methode:
Delphi-Quellcode:
function TCustomer.RemovefromDB(con: TZConnection):integer;
var
  q: TZQuery;
begin
  q:=TZQuery.Create(nil);
  q.connection:=con;
  try
    q.sql.Text:='Delete from Warenverkauf1 where id= :id';
    q.params.parseSQL(q.sql.text, True);
    q.params.paramvalues['id']:=self.id;
    q.execSQL;
  finally
    q.free;
  end;

end;
gibt nach dem Löschen-ButtonClick die Meldung "ungültige Zeigeroperation" aus. Nach dem loadFormDB bzw. Neustart des Programms ist jedoch festzustellen, dass der entsprechende Datensatz gelöscht wurde.
Was ist das nun?
Mir wird wieder einmal meine schiere Größe bewußt. Wie und wo soll man all da lernen können, was mit so einem kleinen Programmchen zusammenhängt. Ich habe in meinem bisherigen Leben 2 Studien (auf völlig anderen Gebieten, als der Informatik) sehr erfolgreich absolviert, doch hier in einer Hobbybeschäftigung ist es so schwer die jeweils nächste Stufe wirklich zu finden. Ich könnte noch 10 Bücher über OOP lesen, doch hier an so einer Stelle weiss ich einfach nicht weiter. Habe ich nun dem Querry die richtige Connection gegeben?
Norbert
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.669 Beiträge
 
Delphi 12 Athens
 
#7

AW: Kundenliste

  Alt 22. Apr 2017, 20:24
Und wenn Du nach dem Aufruf von RemoveFromDB das explizite Free einmal weglässt? Standardmäßig gibt die TObjectList das zu löschende Element selbst frei, das geht aber in die Hose, wenn Du das vorher schon tust.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Antwort Antwort


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 04:45 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz