AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Lesen aus Tabellenspalten

Lesen aus Tabellenspalten

Ein Thema von MCFEED · begonnen am 4. Feb 2009 · letzter Beitrag vom 4. Feb 2009
Antwort Antwort
Seite 1 von 2  1 2   
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#1

Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 11:15
Datenbank: SQL Server 2005 • Version: 2005 • Zugriff über: ODBC
Schönen Guten Tag an alle,

Leider konnte ich nicht alles in die Überschrift reinschreiben(wär zu lang geworden).
Und zwar: Ich möchte gerne meine zukünftigen Daten von einer Tabellenspalte zu einer anderen "umleiten", also z.B. ich habe eine Tabelle XTERMIN, und eine XVORGANG. Bei XTERMIN gibts eine Spalte namens Vorgang_ID, und bei XVORGANG gibts eine Spalte _BEMERKUNG. Soviel dazu...
Ich will aber die "zukünftigen" daten in _BEMERKUNG(XVORGANG) in die Spalte Vorgang_ID (XTERMIN) haben.
Kann mir jemand vielleicht einen Denkanstoß geben, wie ich das anstellen könnte? Wie ich die Daten dann aus dem Vorgang_ID in mein Stringgrid kriege, weiss ich ja ,aber das kommt ja erst danach...


Wäre über jede Antwort froh

MFG MCFEED

Edit: Kann ich das über Select auch machen? Oder eher nich?
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#2

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:10
hi,

so wirklich verstanden habe ich nicht was du willst, aber wenn du daten von einer tabelle in eine andere Kopieren willst dürfte das mit einem insert gehen.

Aber erkläre doch mal, was du grundsätzlich vorhast, also quasi ohne die technische umsetzung die du schon in deinem Kopf hast

Gruß
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#3

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:33
Grüße Angos,

Hab ich mich so umständlich ausgedrückt?
Sorry, naja grundsätzlich will ja einfach nur meinem Programm sagen das es die zukünftigen Benutzerdaten aus Bemerkung in die Spalte bemerkung in meinem Stringgrid wieder ausgibt.

Hab ein Editfeld Bemerkung wo die gleichnamigen sachen halt reinkommen. Das Problem dabei aber ist, dass das Feld Bemerkung bei mir in der Tabelle Vorgang ist , und mein Stringgrid aber bis jetzt nur Spalten aus der Tabelle Termin nutzt(Mitarbeiter, Kunde usw is da drin).

Ich will aber auch die Bemerkung haben verstehst du?Damit ich diese wieder im Anschluss sobald das was ich in mein Editfeld eingegeben habe, in meinem Stringgrid erscheint und von da über ein Onklickereignis wieder in das Editfeld ausgeben wird.

Das mit dem Ausgeben ins Editfeld hab ich schon bei den anderen gemacht, kein Ding. Hab aber kein Plan wie ich SQL/bzw Delphi sage das er die Spalte Bemerkung(VORGANG) mit meinem Editfeld Bemerkung verbinden soll.

ps.: Insert? Hmmm.. ja könnte klappen, danke


MFG MCFEED
  Mit Zitat antworten Zitat
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#4

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:45
Achso zum besseren Verständnis:

Ich erstelle gerade ein Ausgangsbuch für Mitarbeiter, sprich wo sie sich abmelden können. Auf meiner Form sin halt editfelder(logisch?!)und in diese wird halt so gut wie alles eingetragen(bis auf ComboBox-Felder). Dise eingaben gehen an meine Tabellen im SQL server. Dieser gibt sie an mein Striggrid weiter, da dort alles angezeigt wird(Mitarbeiter;Abmeldung-Wann?;Rückkehr usw).

Am Ende kann man auf ein Datensatz im Stringgrid klicken und dieser erscheint, so wie ich ihn eingegeben habe wieder in den darunter liegenden Editfeldern .

Bemerkung(edit) is halt eins davon. Hab dazu auch passendes gegenstück Bemerkung in Tabelle Vorgang und Spalte Bemerkung in Stringgrid. Im Prinzip: Editfeld->Datenbank->Stringgrid->Editfeld.

MFG MCFEED

PS: Kann auch mal ein bissel Quellcode reinstellen, wenn du willst, damit du siehst was ich meine.
  Mit Zitat antworten Zitat
angos

Registriert seit: 26. Mai 2004
Ort: Rheine
549 Beiträge
 
Delphi 11 Alexandria
 
#5

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:47
hi,

so kommen wir der Sache schon näher

also wenn ichs richtig verstehe, willst du eigentlich nix in der db ändern, sondern nur zusätzlich mit ausgeben.

da könntest du mit einem select-statement arbeiten

SQL-Code:
Select * from Tabelle1 AS t1
 left outer join Tabelle2 as t2 on t1.referenzfeld = t2.referenzfeld
referenzfeld ist nun das feld, welches in beiden tabellen gleich ist, also quasi die verknüpfung. in deinem Fall dürfte das Vorgang_ID sein.

Der Sql nimmt in dem Fall wie oben alle Datensätze aus Tabelle1 und sortiert die Daten von Tabelle2 hinten dran, wenn er einen passenden Datensatz in Tabelle2 findet. Findet er keinen Datensatz, so bleiben die felder einfach leer.

Option 2 wäre:
SQL-Code:
Select * from Tabelle1 AS t1
INNER JOIN Tabelle2 as t2 on t1.referenzfeld = t2.referenzfeld
hier würden nur Datensätze bei rumkommen, welche in beiden Tabellen passende Datensätze finden


* Zu deinem letzten Eintrag: Du müsstest das oben beschriebene an der Stelle einbauen, wo der Sql-Server die Daten halt liefert. Ich weis jetzt nicht wie bei dir die Daten an das Stringgrid übergeben werden.


Gruß
Ansgar
  Mit Zitat antworten Zitat
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#6

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:56
JOOO!! Du bist ein Genie, du weisst was ich will

Hier zu mal Quellcode(Speicherung in Tabelle)

Delphi-Quellcode:
procedure TAusgang_SL_F.BB_SpeichernClick(Sender: TObject);
begin

  Tab_Ausgang.Append;
  //Tab_Ausgang.putfield('Termin_ID');
  Tab_Ausgang.putfield('_MA_NR1', E_Nr1.text);
  Tab_Ausgang.putfield('_MA_NR2', E_Nr2.text);
  Tab_Ausgang.putfield('_MA_NR3', E_Nr3.text);
  Tab_Ausgang.putfield('_MA_NR4', E_Nr4.text);
  Tab_Ausgang.putfield('_KZ', 1);
 // XTERMIN->VORGANG_ID->BEMERKUNG = Ausgabe Bemerkung!!!
  Tab_Ausgang.putfield('_Tag_Von', strtodatetime(E_TagVon.text));
  Tab_Ausgang.putfield('_Tag_Bis', strtodatetime(E_TagBis.text));
  Tab_Ausgang.putfield('AngelegtAm', now);
  Tab_Ausgang.putfield('AngelegtVon', global_Benutzer);
  Tab_Ausgang.putfield('BearbeitetAm', now);
  Tab_Ausgang.putfield('BearbeitetVon', Global_Benutzer);
  // Tab_ausgang.putfield('_BEMERKUNG', E_Bemerkung.text);

  if E_KUNR.text <> ''
  then begin
    Tab_Ausgang.putfield('_ADRESSEN_NR', E_KUNR.text);
    Tab_Ausgang.putfield('_Tab_KZ', 'KU' );
  end
  else begin
    if E_LIENR.text <> ''
    then begin
      Tab_Ausgang.putfield('_ADRESSEN_NR', E_LIENR.text);
      Tab_Ausgang.putfield('_Tab_KZ', 'LI');
    end
    else begin
      if E_INTNR.text <> ''
      then begin
        Tab_Ausgang.putfield('_ADRESSEN_NR', E_INTNR.text);
        Tab_Ausgang.putfield('_Tab_KZ', 'IN');
      end
      else begin
        ShowMessage('Keine Zieladresse ausgewählt');
        exit;
      end;
    end;
  end;
  Tab_Ausgang.post;
  Mit Zitat antworten Zitat
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#7

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 13:59
Und hier meine Anzeige davon im Stringgrid:

Delphi-Quellcode:
procedure TAusgang_SL_F.Zeige_Daten;
  var OleVariante : OleVariant;
begin
  Q_Ausgang.closesql;
  Q_Ausgang.setsqltext('select T.*, '+
                       'M.Name as Name1, M.Vorname as Vorname1 , ' +
                       'M2.Name as Name2, M2.Vorname as Vorname2,' +
                       'M3.Name as Name3, M3.Vorname as Vorname3,' +
                       'M4.Name as Name4, M4.Vorname as Vorname4,' +
                       'K.Name as Kunde, L.Name as Liefer,'+
                       'I.Name as Interess from XTermin T' + #13#10 +
                       'left outer join MitarBW M on (M.NR = T._Ma_Nr1) ' +
                       'left outer join MitarBW M2 on (M2.NR = T._Ma_Nr2) ' +
                       'left outer join MitarBW M3 on (M3.NR = T._Ma_Nr3) ' +
                       'left outer join MitarBW M4 on (M4.NR = T._Ma_Nr4) ' +
                       'left outer join Kunden K on (K.Nummer = T._Adressen_NR) ' +
                       'left outer join Liefer L on (L.Nummer = T._Adressen_NR)'+
                       'left outer join Interess I on (I.Nummer = T._Adressen_NR)'+
                       'where T._Tag_Von <= ''' + datetimetostr(now) + ''' ' +
                       'and T._Tag_Bis >= ''' + datetimetostr(now)+ ''' ' +
                       'or ((_KZ2 = '''') or (_KZ2 is null)) ') ;
  Q_Ausgang.opensql;



  SG_Ausgang.RowCount := 2;
  Zeile_Leeren(1);

  while not Q_Ausgang.eof do
  begin
    if SG_Ausgang.Cells[1,SG_Ausgang.RowCount - 1] <> ''
    then SG_Ausgang.RowCount := SG_Ausgang.RowCount + 1;
    Zeile_Leeren(SG_Ausgang.RowCount -1);

    SG_Ausgang.Cells[0, SG_Ausgang.RowCount -1] := q_ausgang.getfield('XTermin_ID');

    SG_Ausgang.Cells[1, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Name1') +
                                                   ', ' + Q_Ausgang.getfield('Vorname1');
    SG_Ausgang.Cells[2, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Name2')+
                                                   ', ' + Q_Ausgang.getfield('Vorname2');
    SG_Ausgang.Cells[3, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Name3')+
                                                   ', ' + Q_Ausgang.getfield('Vorname3');
    SG_Ausgang.Cells[4, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Name4')+
                                                   ', ' + Q_ausgang.getfield('Vorname4');

  if uppercase(q_ausgang.getfield('_Tab_KZ')) = 'KU'
  then SG_ausgang.Cells[7, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Kunde');

  if uppercase(q_ausgang.getfield('_Tab_KZ')) = 'LI'
  then SG_Ausgang.Cells[7, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Liefer');

  if uppercase(q_ausgang.getfield('_Tab_KZ')) = 'IN'
  then SG_Ausgang.Cells[7, SG_Ausgang.RowCount -1] := Q_Ausgang.getfield('Interess');

  try
    OleVariante := Q_Ausgang.getfield('_Tag_Von');
    if OleVariante <> null
    then begin
      //ShowMessage(datetimetostr(Q_Ausgang.getfield('_Tag_Von')));
      SG_Ausgang.Cells[5,SG_ausgang.rowcount -1] := datetimetostr(Q_Ausgang.getfield('_Tag_Von'));
      SG_Ausgang.Cells[6,SG_Ausgang.rowcount -1] := datetimetostr(Q_Ausgang.getfield('_Tag_Bis'));
    end;
  except
    ShowMessage('Fehler' + #13#10 + Exception(ExceptObject).Message);
  end;
  Q_Ausgang.next;


  end;
 end;
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#8

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 14:14
@MCFEED: Sag mal, wenn du D5 Enterprise hast, warum verwendest du dann nicht die datensensitiven Komponenten (DBEdit, DBGrid, DBNavigator,...) ?
Mit den datensensitiven Komponenten bist du ungefähr um den Faktor 10 produktiver als mit dem StringGrid.
Andreas
  Mit Zitat antworten Zitat
Benutzerbild von MCFEED
MCFEED

Registriert seit: 16. Dez 2008
Ort: Thüringen/Artern
27 Beiträge
 
Delphi 5 Enterprise
 
#9

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 14:29
@shmia

Hehe, ja das hat mich hier schonmal jemand gefragt, kann dir nur dasselbe sagen wie ihm: Wenn der Chef(Programmierung) meint das sei für unsere Sache besser dann ist das so!!!

Ne Spass mal beiseite, mit nem DBGrid hab ich aber das Problem das ich dann daten aus Datenmodul in mein grid nicht bekomme, soweit ich weiss. Und wir haben eins(DM1 ->originell? ).

Naja ausserdem meinte er das wir dann am Ende weniger Aufwand betreiben müssten wegen der Pflege des Programms. Von wenig Aufwand hab ich aber bis jetzt nich viel gemerkt, zu mal ich euch Recht geben muss das das DBGrid das alles automatisch gemacht hätte(füllen usw)

Bin auch erst seit ein paar wochen hier bei Delphi/bzw habe was mit Delphi zu tun, und nich sehr viel ahnung wie ich zugestehen muss. Hab bescheidenerweise nur C/C++ vorher gehabt .

MFG MCFEED
  Mit Zitat antworten Zitat
shmia

Registriert seit: 2. Mär 2004
5.508 Beiträge
 
Delphi 5 Professional
 
#10

Re: Lesen aus Tabellenspalten

  Alt 4. Feb 2009, 14:46
Zitat von MCFEED:
Wenn der Chef(Programmierung) meint das sei für unsere Sache besser dann ist das so!!!
Mein Beileid; ich kenne das Problem.
Hier ist ein Falscher System-Architekt zu Gange.
Zitat von MCFEED:
mit nem DBGrid hab ich aber das Problem das ich dann daten aus Datenmodul in mein grid nicht bekomme, soweit ich weiss
Nein, das ist kein Problem.
Wenn man Felder anzeigen möchte, die so im Dataset nicht vorkommen, dann kommt man mit berechneten Feldern und Lookupfeldern recht weit.
Es gibt nur wenige Fälle, bei denen man besser ganz auf die datensensitiven Komponenten verzichtet.
Manche Leute haben vielleicht einmal mit den datensensitiven Komponenten eine negative Erfahrung gemacht und lehnen sie daher grundsätzlich ab.
Eine sehr dumme Einstellung, aber leider versuchen die Chefs ihren Programmierern immer wieder solchen Unsinn vorzuschreiben.

naja; weiter machen ohne mullen und knullen.
Andreas
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2   

Themen-Optionen Thema durchsuchen
Thema durchsuchen:

Erweiterte Suche
Ansicht

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:13 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