Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Access Abfrage per SQL erweitern (https://www.delphipraxis.net/156095-access-abfrage-per-sql-erweitern.html)

schniede 19. Nov 2010 15:46

Datenbank: Access • Version: 2003 • Zugriff über: ADO

Access Abfrage per SQL erweitern
 
Etwas weiter unten "Access neues Feld anlegen" ist der Start meiner Geschichte.
Soweit so gut.
Also Neue Tabelle (Versionsinfo) u. eine Tabelle erweitert zur Laufzeit klappt ohne Probleme, nach Bummis Vorschlag im AfterConnect.
Nun hab ich aber das Problem das ich eine Abfrage erweitern möchte.Mache ich das ganze
per Access Oberfläche geht das ja ohne Probleme, nur wie kann ich soetwas zur Laufzeit machen.
Wenn ich ein Feld im Feldeditor der Query hinzufüge bekomme ich ne Fehlermeldung, nach einer Datenanderung, das mehrere Recordsets nicht möglich sind. Mache ich das ganze statisch wie gesagt klappt alles.
Ich suche sowas wie Alter Abfrage.... die bestehende Abfrage ist schon mit der Access
Oberfläche vorhanden, nur wie gesagt ein Feld soll noch hinzu.

Gruß schniede

Bummi 19. Nov 2010 16:03

AW: Access Abfrage per SQL erweitern
 
Liste der Anhänge anzeigen (Anzahl: 1)
meinst Du
Code:
DROP View ViewName
und danach
Code:
Create View ViewName as
...
...
ich hab mal ein Beispiel unserer Scripte angehängt

schniede 19. Nov 2010 16:37

AW: Access Abfrage per SQL erweitern
 
Also damit kann ich eine Abfrage erstellen


Code:
 with NeuQuery do begin
   sql.clear;
   NeuQuery.SQl.add('create view test as select Memory from geraetetabelle');
   ExecSQL;
   end
;

Danach habe ich in der Datenbank eine Abfrage Test mit dem Feld Memory, aber ich möchte eine vorhandene Abfrage ändern.

Bummi 19. Nov 2010 16:44

AW: Access Abfrage per SQL erweitern
 
Ich würde zwar AdoConnection.Execute(SQL) schreiben, aber ja.

schniede 20. Nov 2010 13:12

AW: Access Abfrage per SQL erweitern
 
So für alle die es vieleicht interressiert, meine Lösung des Problems.

Delphi-Quellcode:
   with NeuQuery do begin
   sql.clear;
   NeuQuery.SQl.add('drop view Geraeteabfrage');
   ExecSQL;
   end;

   with NeuQuery do begin
   sql.clear;
   SQl.add('create view Geraeteabfrage as select Memory,Seriennummer,Eingang
      ,Ausgang,Ausgabe,GeraeteID,Bemerkung,Bestellnummer
      , Bezeichnung,Gruppen_id, Sortierung, exelnr, Zustand,');

   sql.Add('[Zustandtabelle].Zustand_id ');

   sql.add('FROM [Zustandtabelle] INNER JOIN ([Bestellnummerntabelle] INNER
     JOIN  [Geraetetabelle] ON Bestellnummerntabelle.Bestell_id = Geraetetabelle.Bestell_id)
     ON Zustandtabelle.Zustand_id = Geraetetabelle.Zustand_id');
   ExecSQL;
   end;
großes Danke Bummi


Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 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