Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi Form mit mehreren DataSources (https://www.delphipraxis.net/105370-form-mit-mehreren-datasources.html)

Andidreas 20. Dez 2007 16:23

Datenbank: MySQL • Version: 5.0.41 • Zugriff über: MySQLDAC

Form mit mehreren DataSources
 
Liste der Anhänge anzeigen (Anzahl: 1)
aloah...


bekomme ich ein problem, wenn eine form mehrer datasources hat???

Delphi-Quellcode:
procedure Tlogpic_form.bitbtn_createClick(Sender: TObject);

begin

  Try
    With (dbm.main_data) Do
    Begin
      Active := False;
      datsrc_maindata := nil;
      Application.ProcessMessages;
      SQL.Clear;

      SQL.Add('Select                                                        '
             +'PSKSPN, PSKMPN, PSKPNT, PSKTON, PSKCNR, PSKVNR,               '
             +'PCKSPN, PCKITM, PCKORT, PCKBEZ, PCKANR, PCKFBE, PCKCUP,       '
             +'MATANR, MATCUP, MATDIM                                        '
             +'From LOGPSK                                                   '
             +'Left Outer Join LOGPCK                                        '
             +'On PSKSPN = PCKSPN                                            '
             +'Left Outer Join LOGMAT                                        '
             +'On PCKANR = MATANR                                           '
             +'And PCKCUP = MATCUP                                           '
             +'where PSKSPN = "'+ dbm.No_LOGPIC.FieldByName('PICSPN').Text +'"');

      //datsrc_maindata.DataSet := dbm.main_data;
      Active := True;

      //dbgrid_maindata.Columns[0].Field := dbm.main_data.FieldByName('PSKSPN');
      //dbgrid_maindata.Columns[1].Field := dbm.main_data.FieldByName('PSKMPN');
      //dbgrid_maindata.Columns[2].Field := dbm.main_data.FieldByName('PSKPNT');
      //dbgrid_maindata.Columns[3].Field := dbm.main_data.FieldByName('PSKTON');
      //dbgrid_maindata.Columns[4].Field := dbm.main_data.FieldByName('PSKCNR');
      //dbgrid_maindata.Columns[5].Field := dbm.main_data.FieldByName('PSKVNR');
      //dbgrid_maindata.Columns[6].Field := dbm.main_data.FieldByName('PCKITM');
      //dbgrid_maindata.Columns[7].Field := dbm.main_data.FieldByName('PCKORT');
      //dbgrid_maindata.Columns[8].Field := dbm.main_data.FieldByName('PCKBEZ');
      //dbgrid_maindata.Columns[9].Field := dbm.main_data.FieldByName('PCKANR');
      //dbgrid_maindata.Columns[10].Field := dbm.main_data.FieldByName('PCKFBE');
      //dbgrid_maindata.Columns[11].Field := dbm.main_data.FieldByName('PCKCUP');
      //dbgrid_maindata.Columns[12].Field := dbm.main_data.FieldByName('MATDIM');
    End
  Except
    MessageDlg('Error while getting Datas from DB!', mtError, [mbOK], 0);
  End;

  ShowMessage(dbm.main_data.FieldByName('MATDIM').AsString);

end;
wenn ich die hier deaktivierten befehle aktiviere, und mein programm laufen lasse, dann bekomme ich
eine exception(siehe anhang) wenn ich die query komponente (dbm.maindata) auf true setzen möchte...

kann das daran liegen, das ich mehrer datasources auf der form habe die auch zum teil aktiv sind???

oder woran könnte es liegen???

mkinzler 20. Dez 2007 16:29

Re: Form mit mehreren DataSources
 
es müsste wohl
Delphi-Quellcode:
dbm.No_LOGPIC.FieldByName('PICSPN').asString
heissen.

Andidreas 20. Dez 2007 16:44

Re: Form mit mehreren DataSources
 
nein daran liegts nicht!
hab das gerade geändert und trotzdem kommt immer noch die gleiche exception...

der sql befehl müsste soweit auch in ordnung sein, denn wenn ich das füllen des dbgrids sowie die zuweisung für das datasets aus dem programm nehme kriege ich von der sql query dir richtigen daten zurück geliefert!

DP-Maintenance 20. Dez 2007 16:55

DP-Maintenance
 
Dieses Thema wurde von "Matze" von "Programmieren allgemein" nach "Datenbanken" verschoben.
Delphi-Frage

haentschman 20. Dez 2007 17:01

Re: Form mit mehreren DataSources
 
Hallo...

welches DBMS benutzt du ?
welche Komponenten ?

...Zugriffsverletzung gibt es mit Zeos z.B. wenn in der Query die Property Connection vergessen wurde.

:hi:

Andidreas 20. Dez 2007 17:05

Re: Form mit mehreren DataSources
 
ich habs im ersten beitrag nachgetragen...

aber hier nochmal

datenbank --> mysql 5.0.41
komponente --> mysqldac


das ich die query nicht mit der connection verbunden habe, habe ich schon überprüft, das stimmt aber eigentlich alles!!!

mkinzler 20. Dez 2007 17:42

Re: Form mit mehreren DataSources
 
Schreib mal das
Delphi-Quellcode:
dbm.main_data.Active;

marabu 21. Dez 2007 07:03

Re: Form mit mehreren DataSources
 
Moin Andreas,

syntaktisch ist dein Code ja fehlerfrei, aber die Vorgehensweise ist überdenkenswert. Warum erneuerst du die statischen Spalten des DBGrid bei jeder Anfrage? Warum fragst du mehr Spalten bei der DB an als du im Grid zeigst? Warum riskierst du Schreibfehler bei den Spaltennamen, indem du sie mehrmals schreibst?

Wenn du das DBGrid mehrmals zur Laufzeit umkonfigurierst, dann kann es eventuell passieren, dass Spalten bestehen bleiben, die auf nicht existente Felder verweisen.

Grüße vom marabu

RavenIV 21. Dez 2007 08:11

Re: Form mit mehreren DataSources
 
Vermutlich liegt es an dieser Zeile:
datsrc_maindata := nil;
Du greifst mit
datsrc_maindata.DataSet := dbm.main_data; auf ein Objekt zu, das garnicht existiert.

Andidreas 21. Dez 2007 10:31

Re: Form mit mehreren DataSources
 
danke erst mal für die antworten... inzwischen funktioniert es auch :-) obwohl ich eigentlich nix geändert hab am source code... :shock:

Zitat:

Zitat von marabu
Warum erneuerst du die statischen Spalten des DBGrid bei jeder Anfrage?
Warum riskierst du Schreibfehler bei den Spaltennamen, indem du sie mehrmals schreibst?

Wenn du das DBGrid mehrmals zur Laufzeit umkonfigurierst, dann kann es eventuell passieren, dass Spalten bestehen bleiben, die auf nicht existente Felder verweisen.

@marabu aus denn fragen die ich in deinem zitat noch hab stehen lassen werde ich nicht schlau sry... aber viell. kannst dus noch mal anders formulieren damit ichs versteh :-[

zu der frage warum ich mehr spalten abfrage wie ich anzeige, die anzeige dient nur zu testzwecken! die daten die ich mir im query ermittel, werden später weiterverarbeitet! und da benötige ich alle felder die im query angegeben sind!!!


Alle Zeitangaben in WEZ +1. Es ist jetzt 03:02 Uhr.

Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz