Einzelnen Beitrag anzeigen

Benutzerbild von haentschman
haentschman

Registriert seit: 24. Okt 2006
Ort: Seifhennersdorf / Sachsen
5.431 Beiträge
 
Delphi 12 Athens
 
#11

AW: Einfügen eines neues Feldes in AdoTable

  Alt 16. Aug 2018, 05:54
Moin...
Ich kann das so nicht stehen lassen...du willst ja aus den Fehlern lernen.

1. Beschäftige dich mal mit Begriff "Owner" http://docwiki.embarcadero.com/Libra...omponent.Owner
2. Beschäftige dich mit dem Begriff "Parent" (für Komponenten) http://docwiki.embarcadero.com/Libra...Control.Parent
3. Warum eine Table? Man kann das auch mit einer Query machen. Im OI trägt man das SQL ein. Vorteil: Wenn man andere Daten braucht, braucht man nur das SQL zu ändern (Bedingungen hinzufügen) und nicht die Komponente tauschen.

Delphi-Quellcode:
var
  AdoQuery1: TAdoQuery; // Auf Grund der Namensgebung sind das Komponenten auf dem Formular. Diese hällt die Gesamtdaten.
  //AdoConnection: TADOConnection; // wie himutsu schon sagte... "Query.Connection := AdoQuery1.Connection"
  
  Str1: String;
private // Abschnitt in der Form
  Query: TAdoQuery; // nicht auf die Form legen! Das nennt man dynamisch erzeugen. Name egal.

  ...

  if AdoQuery1.FieldList.Find(Str1) = nil then
  begin
    AdoQuery1.Close; // kürzer

    Query := TAdoQuery.Create(nil); // Owner = nil weil du gibst das Objekt selbst frei. (Query.Free)
    try
      Query.Connection := AdoQuery1.Connection;
      Query.SQL.Text := 'ALTER TABLE ' + TableName + ' ADD ' + FieldName + ' INTEGER'; // kürzer...Tablename = AdoQuery1
      Query.ExecSQL;
      // ggf. in try/except wenn man auf die Fehler reagieren will
    finally
      Query.Free;
    end;

    AdoQuery1.Open; // kürzer... Wenn du die Query nicht schließt, reicht ein AdoQuery1.Refresh
  end;

Geändert von haentschman (16. Aug 2018 um 05:57 Uhr)
  Mit Zitat antworten Zitat