AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Delphi Mein erstes Mal! Query mit SQL und Ads

Mein erstes Mal! Query mit SQL und Ads

Ein Thema von mjank · begonnen am 5. Dez 2018 · letzter Beitrag vom 10. Dez 2018
Antwort Antwort
Seite 1 von 2  1 2   
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#1

Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 15:16
Datenbank: ADS • Version: 10.00.0.3 • Zugriff über: Query und SQL
Zur Verwaltung von Projektdaten habe ich eine Datenbank erzeugt.
Diese wird aktuell von einer Mitarbeiterin mit einer einfachen Software gefüllt.
- neuer Datensatz
- viele Eingabefelder
- speichern
...

Nun will ich die Daten natürlich auch nutzen. Dazu benötige ich Such- und Sortierfunktionen.
Mal will ich nur einen bestimmten Datensatz finden, mal will ich alle Projekte mit einem bestimmten Vermerk finden.
Dazu habe ich nach vielem Lesen AdsQuery mit SQL-Zugriff versucht.

Ich glaube die Möglichkeiten an Spalten anzeigen oder nicht, sortieren
und filtern habe ich erkannt.

Derzeit scheitere ich glaube an einem Kreuzchen, dass ich irgendwo vergessen habe.

Es gibt bereits:
- AdsConnection
- AdsTable
- DataSource
- DBGrid

Damit funktioniert das Anlegen und das Füllen der Datensätze.

Nun habe ich ein AdsQuery eingefügt und versuche mich an einfachsten Funktionen und scheitere.
AdsConnection, DatabaseName, DataSource und MasterSource des AdsQuery sind mit den anderen Komponenten verbunden.

Delphi-Quellcode:
  AdsQuery1.Active := false;
  AdsQuery1.SQL.Clear;
  AdsQuery1.SQL.Add('SELECT * FROM "... richtiger Pfad sehr lang aber richtig ... " ORDER BY Bezeichnung');
  AdsQuery1.Active := true;
"Bezeichnung" ist ein Name einer Spalte in der Tabelle.
Dann bekomme ich aber folgende Fehlermeldung.

Zitat:
Im Projekt ... ist eine Exception der Klasse EADSDatabaseError mit der Meldung 'AdsQuery1: Error 5014: Advantage does not have an index open with the specified handle. The handle must be to an index order.' aufgetreten.
Für den SQL-Teil habe ich schon viele Beispiele gelesen.
Irgendwo hänge ich fest.
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#2

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 15:22
Datasource und Mastersource der Query brauchst Du nicht verbinden.
Wenn die AdsConnection verbunden ist, kann auch der Pfad im SQL Statement komplett entfallen.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#3

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 15:33
Mit dem langen Pfad kam "an dieser Stelle" erstmal keine Fehler, werde ich noch ändern.

Ich habe jetzt Datasource und Mastersource im Query gelöscht.
Jetzt kommt erstmal keine Fehlermeldung, es passiert aber auch sonst nichts.

Ich möchte bei der Suche die Menge an Datensätzen schrittweise reduzieren,
in dem ich nach und nach Bedingungen hinzufüge.

z.B.:
1. nur Projekte in Berlin (zu viele Datensätze)
2. nur Kunden die Meier heißen (nur noch wenige Datensätze)
usw.

Dazu sollen die jeweils übrig gebliebenen Datensätze im DBGrid angezeigt werden.
Muss ich das DBGrid dazu "aktualisieren"?
  Mit Zitat antworten Zitat
RSF

Registriert seit: 13. Mär 2008
150 Beiträge
 
Delphi 10.2 Tokyo Professional
 
#4

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 15:48
Ich möchte bei der Suche die Menge an Datensätzen schrittweise reduzieren,
in dem ich nach und nach Bedingungen hinzufüge.

z.B.:
1. nur Projekte in Berlin (zu viele Datensätze)
2. nur Kunden die Meier heißen (nur noch wenige Datensätze)
usw.

Dazu sollen die jeweils übrig gebliebenen Datensätze im DBGrid angezeigt werden.
Muss ich das DBGrid dazu "aktualisieren"?
Das verbundene DBGrid aktualisiert sich selbst bei jeden AdsQuery1.open. ( wenn vorher AdsQuery1.close)
Ronald
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman
Online

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

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 16:13
Moin...
Wenn du schon anfängst...

besser:
Delphi-Quellcode:
AdsQuery1.Close; // imho nicht nötig
AdsQuery1.SQL.Text := 'SELECT * FROM "... richtiger Pfad sehr lang aber richtig ... " ORDER BY Bezeichnung';
// .Text setzt auch alle Parameter, wenn verwendet, zurück. SQL.Add nur wenn das SQL aus verscheidenen Teilen zusammengesetzt wird.
AdsQuery1.Open;
Immer mit SQL Parametern arbeiten.
Delphi-Quellcode:
AdsQuery1.Close; // imho nicht nötig
AdsQuery1.SQL.Text := 'SELECT * FROM TableXXX where SpalteX = %s ORDER BY Bezeichnung';
// .Text setzt auch alle Parameter, wenn verwendet, zurück. SQL.Add nur wenn das SQL aus verscheidenen Teilen zusammengesetzt wird.
AdsQuery1.ParamByName.AsString := 'Bedingung Wert';
AdsQuery1.Open;
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#6

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 16:17
Wie Ronald geschrieben hat, sollte sich das Grid selbständig aktualisieren. Hier einmal ein Testaufbau, jegliche Verknüpfung erfolgt zur besseren Darstellung in FormCreate (absichtlich alle Namen auf den automatisch vergebenen gelassen!):
Delphi-Quellcode:
procedure TForm1.FormCreate(Sender: TObject);
begin
  AdsConnection1.AliasName := 'test';
  AdsConnection1.connect;
  AdsQuery1.AdsConnection := AdsConnection1;
  DataSource1.DataSet := AdsQuery1;
  DBGrid1.DataSource := DataSource1;
  DBNavigator1.DataSource := DataSource1;
end;
Ein Öffnen der Datenmenge kann zB durch einen Buttonklick erfolgen:
Delphi-Quellcode:
procedure TForm1.Button1Click(Sender: TObject);
var
  where: string;
begin
  AdsQuery1.Close;
  AdsQuery1.SQL.Text := 'select * from projekt';
  if Length(Edit1.Text)>0 then
    where:='(ort like :ort)';
  if length(Edit2.Text)>0 then begin
    if length(where)>0 then
      where := where+' AND ';
    where:= where+'(name like :name)';
  end;
  if length(where)>0 then
    AdsQuery1.sql.add('WHERE '+where);
  AdsQuery1.SQL.Add('order by bezeichnung');
  if AdsQuery1.Params.FindParam('ort')<>nil then
    AdsQuery1.ParamByName('ort').AsString := Edit1.Text+'%';
  if AdsQuery1.Params.FindParam('name')<>nil then
    AdsQuery1.ParamByName('name').AsString := Edit2.Text+'%';
  AdsQuery1.Open;
end;
Hier ein Edit1 der Ort und in Edit2 der Name.
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#7

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 5. Dez 2018, 16:29
Danke für die viele schnelle Hilfe.
Ich muss jetzt mal schnell auf die Autobahn.
Bin zwei Tage zum Arbeiten weg.
Ich hoffe ich komme an Samstag dazu, weiter daran zu arbeiten.

Gebe dann Rückmeldung.
  Mit Zitat antworten Zitat
mjank

Registriert seit: 5. Dez 2018
12 Beiträge
 
#8

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 9. Dez 2018, 16:31
Folgendes habe ich mit der Erwartung versucht,
dass ich in meinem DBGrid nur noch die Spalte "Bezeichnung" habe.

Delphi-Quellcode:
  AdsQuery1.Close;
  AdsQuery1.SQL.Text := 'SELECT Bezeichnung FROM "C:\Projekte\Delphi\Sicotronic\Projekte\Daten\DB_Projekte.ADT"';
  AdsQuery1.Open;
Leider passierte nichts, nichtmal eine Fehlermeldung.

Ich habe in der Form "frm_Hauptform" eine AdsConnection "AdsConnection_Daten",
eine AdSTable "DB_Projekte" und eine DataSource "DS_Projekte".
Was muss ich ansprechen, wenn ich meinen String "C:\Projekte..." ersetzen will.
Ich habe es mit folgendem Code versucht:

Delphi-Quellcode:
  AdsQuery1.Close;
  AdsQuery1.SQL.Text := 'SELECT * FROM frm_Hauptform.DB_Projekte';
  AdsQuery1.Open;
Dies löst leider eine Exception aus.
Zitat:
... The requested objekt was not found. frm_Hauptform - link object is not supported on free connection. Table name: DB_Projekte' aufgetreten.
Ich hoffe, ihr hapt noch einen Tip für mich.
  Mit Zitat antworten Zitat
Heuman
(Gast)

n/a Beiträge
 
#9

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 9. Dez 2018, 18:07
Folgendes habe ich mit der Erwartung versucht,
dass ich in meinem DBGrid nur noch die Spalte "Bezeichnung" habe.

Delphi-Quellcode:
  AdsQuery1.Close;
  AdsQuery1.SQL.Text := 'SELECT Bezeichnung FROM "C:\Projekte\Delphi\Sicotronic\Projekte\Daten\DB_Projekte.ADT"';
  AdsQuery1.Open;
Leider passierte nichts, nichtmal eine Fehlermeldung.

Ich habe in der Form "frm_Hauptform" eine AdsConnection "AdsConnection_Daten",
eine AdSTable "DB_Projekte" und eine DataSource "DS_Projekte".
Was muss ich ansprechen, wenn ich meinen String "C:\Projekte..." ersetzen will.
Ich habe es mit folgendem Code versucht:

Delphi-Quellcode:
  AdsQuery1.Close;
  AdsQuery1.SQL.Text := 'SELECT * FROM frm_Hauptform.DB_Projekte';
  AdsQuery1.Open;
Dies löst leider eine Exception aus.
Zitat:
... The requested objekt was not found. frm_Hauptform - link object is not supported on free connection. Table name: DB_Projekte' aufgetreten.
Ich hoffe, ihr hapt noch einen Tip für mich.

Hallo,

AdsQuery1.SQL.Text := 'SELECT * FROM DB_Projekte';

sollte funktionieren.

Gruß
  Mit Zitat antworten Zitat
Benutzerbild von joachimd
joachimd

Registriert seit: 17. Feb 2005
Ort: Weitingen
672 Beiträge
 
Delphi 10.4 Sydney
 
#10

AW: Mein erstes Mal! Query mit SQL und Ads

  Alt 9. Dez 2018, 20:23
Ich glaube, das fehlt es schon an den Grundlagen. Normalerweise mache ich ungern Eigenwerbung, aber das könnte was für Dich sein:
http://www.lulu.com/shop/joachim-due...-20385058.html.
Mit zusätzlichen Themen, allerdings auf Basis ADS 9:
http://www.lulu.com/shop/joachim-d%C...-17462909.html
Joachim Dürr
Joachim Dürr Softwareengineering
http://www.jd-engineering.de
  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 14:19 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