AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Access SQL Hilfe für Query gesucht
Thema durchsuchen
Ansicht
Themen-Optionen

Access SQL Hilfe für Query gesucht

Ein Thema von HCB · begonnen am 15. Apr 2024 · letzter Beitrag vom 16. Apr 2024
Antwort Antwort
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#1

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 10:59
Wenn ich die SQL-Satements richtig interpretiere, vergleichst du alle Angebote mit allen Rechnungen des Kunden (like O*, bzw like R*).
In deiner Ausgangsvoraussetzung schreibst du aber, dass du nur die Rechnung zum zugehörigen Angebot vergleichen willst.

Kann es sein, dass dir im SQL noch die passende Verknüpfung fehlt?

Ansonsten einfach mal deinen Versuch mit dem "not Exists" hier zeigen.
Peter
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
220 Beiträge
 
Delphi 12 Athens
 
#2

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 12:00
Hier so wie ich es probiert habe:
Delphi-Quellcode:
SELECT A.ABFDocErfNr,A.ABFDocKundenNr,B.ABFPosArtNr,B.ABFPosName1
FROM ABFPos AS B
     INNER JOIN ABFDok AS A ON B.ABFPosDocId = A.ABFDocID
where A.ABFDocErfNr like 'O*and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
where not exists (SELECT A.ABFDocErfNr,A.ABFDocKundenNr,B.ABFPosArtNr,B.ABFPosName1
                  FROM ABFPos AS B
                  INNER JOIN ABFDok AS A ON B.ABFPosDocId = A.ABFDocID
                  where A.ABFDocErfNr like 'R*and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
                  )
LG Harry
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#3

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 13:08
Da bestätigt sich mein Verdacht, dass du ALLE Angebote mit ALLEN Rechnungen des Kunden vergleichst. Außerdem brauchst du noch die Verbindung der Angebotspositionen zu den Rechnungspositionen
Du musst daher deine "like" anpassen. und die Artikelverbindung einbauen. Etwa so:
Code:
SELECT A.ABFDocErfNr,A.ABFDocKundenNr,B.ABFPosArtNr,B.ABFPosName1
FROM ABFPos AS B
     INNER JOIN ABFDok AS A ON B.ABFPosDocId = A.ABFDocID
where A.ABFDocErfNr = 'Angebotsnummer' and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
where not exists (SELECT 1
                  FROM ABFPos AS BB
                  INNER JOIN ABFDok AS AA ON BB.ABFPosDocId = AA.ABFDocID
                  where AA.ABFDocErfNr = 'Rechnungsnummer' and BB.ABFPosType = 0 and AA.ABFDocKundenNr = 'D018543'
                  and BB.Artikelnummer = B.Artikelnummer
                  )
Angebotsnummer und Rechnungsnummer musst du natürlich noch eintragen. Vermutlich lässt sich das auch voneinander ableiten, aber dafür müsste man den DB-Aufbau kennen. Ich habe noch die Aliase angepasst, damit man die Artikelverbindung erstellen kann. Ich bin jetzt davon ausgegangen, dass dafür die Artikelnummer verwendet werden muss. Aber auch das hängt vom DB-Aufbau ab.
Peter
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
220 Beiträge
 
Delphi 12 Athens
 
#4

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 14:07
Vielen lieben Dank Jasocul, leider bringt mir das jetzt einen Fehler:

Syntaxfehler (fehlender Operator) in Abfrageausdruck 'A.ABFDocErfNr = 'O004714' and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
where not exists (SELECT
FROM ABFPos AS BB
INNER JOIN ABFDok AS AA ON BB.ABFPosDocId = AA.ABFDocID
where AA.ABFDocErfNr = 'R042118' and BB.ABFPosType = 0 and AA.ABFDocKundenNr = 'D018543'
and BB.Artikelnummer = B.Artikelnummer
)'

so lautet nun die Abfrage die den Fehler bringt:

Delphi-Quellcode:
SELECT A.ABFDocErfNr,A.ABFDocKundenNr,B.ABFPosArtNr,B.ABFPosName1
FROM ABFPos AS B
     INNER JOIN ABFDok AS A ON B.ABFPosDocId = A.ABFDocID
where A.ABFDocErfNr = 'O004714and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
where not exists (SELECT
                  FROM ABFPos AS BB
                  INNER JOIN ABFDok AS AA ON BB.ABFPosDocId = AA.ABFDocID
                  where AA.ABFDocErfNr = 'R042118and BB.ABFPosType = 0 and AA.ABFDocKundenNr = 'D018543'
                  and BB.Artikelnummer = B.Artikelnummer
                  )
Welcher Operator fehlt denn hier? Kann leider nichts erkennen. Bin Anfänger was die Programmierung mit Delphi betrifft
  Mit Zitat antworten Zitat
Benutzerbild von DeddyH
DeddyH

Registriert seit: 17. Sep 2006
Ort: Barchfeld
27.659 Beiträge
 
Delphi 12 Athens
 
#5

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 14:08
2 mal WHERE geht nicht, das hat mit Delphi nichts zu tun.
Detlef
"Ich habe Angst vor dem Tag, an dem die Technologie unsere menschlichen Interaktionen übertrumpft. Die Welt wird eine Generation von Idioten bekommen." (Albert Einstein)
Dieser Tag ist längst gekommen
  Mit Zitat antworten Zitat
Benutzerbild von Jasocul
Jasocul

Registriert seit: 22. Sep 2004
Ort: Delmenhorst
1.371 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 14:17
Den Fehler habe ich übersehen. Das zweite "where" in der Hauptabfrage durch ein "and" ersetzen sollte genügen.
Im Subselect (nach dem "not exists") muss nach dem select noch irgendwas stehen. Ich trage da meistens eine "1" ein, da Feldinhalte an der Stelle keine Rolle spielen. Man kann aber auch ein "*" oder Feldnamen eintragen.
Peter
  Mit Zitat antworten Zitat
HCB

Registriert seit: 12. Feb 2020
220 Beiträge
 
Delphi 12 Athens
 
#7

AW: Access SQL Hilfe für Query gesucht

  Alt 16. Apr 2024, 14:42
Hallo,
jetzt hab ich den Fehler:
2 Parameter wurden erwartet, aber es wurden zu wenig Parameter übergeben!

Mit dieser Änderung:
Delphi-Quellcode:
SELECT A.ABFDocErfNr,A.ABFDocKundenNr,B.ABFPosArtNr,B.ABFPosName1
FROM ABFPos AS B
     INNER JOIN ABFDok AS A ON B.ABFPosDocId = A.ABFDocID
where A.ABFDocErfNr = 'O004714and B.ABFPosType = 0 and A.ABFDocKundenNr = 'D018543'
and not exists (SELECT 1
                  FROM ABFPos AS BB
                  INNER JOIN ABFDok AS AA ON BB.ABFPosDocId = AA.ABFDocID
                  where AA.ABFDocErfNr = 'R042118and BB.ABFPosType = 0 and AA.ABFDocKundenNr = 'D018543'
                  and BB.Artikelnummer = B.Artikelnummer
                  )
Zur besseren Übersicht anbei der Inhalt der Tabellen.

LG Harry
Angehängte Grafiken
Dateityp: jpg Tabellen.jpg (151,5 KB, 11x aufgerufen)
  Mit Zitat antworten Zitat
Antwort Antwort


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 21:30 Uhr.
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024-2025 by Thomas Breitkreuz