Announcement

Collapse
No announcement yet.

TQuery, Probleme beim Select

Collapse
X
  • Filter
  • Time
  • Show
Clear All
new posts

  • TQuery, Probleme beim Select

    Hallo,

    ich habe ein Problem mit einer Abfrage in einer TQuery-Komponente. Schalte ich im Objektinspektor die Query aktiv, friert Delphi (7) ein. Zur Laufzeit das Anwenderprogramm. Der SQL-Explorer kann das auch nicht.

    Meine Abfrage:
    Ich habe zwei Datenbanken, eine mit Kunden und eine mit Rechungen. Ich möchte alle Rechnungen eines Kunden haben. Trivial, nicht?

    SELECT *
    FROM FIBU.DB FI
    WHERE (FI.KUNDENNUMMER IN
    (SELECT KU.KUNDENNR
    FROM KUNDEN.DB KU
    WHERE KU.PARENT=1076))

    Zur Info:
    - Konvertiere ich die Datembanken in ein anderes Datenbanksystem und nutze deren Querys, geht das dort.
    - Erzeuge ich neue PDX-Datenbanken (vielleicht sind die Files ja kaputt) und kopiere die Datensätze von Alt nach Neu, geht es auch nicht mit den neuen Datenbanken.
    - Auf der Festplatte entstehen die _qsq*.*-Dateien. Da kann man reinschauen und sieht das richtige Ergebnis.

    Weiß jemand Rat?

  • #2
    Hallo,

    haben beide Tabellen einen Primärschlüssel? Wenn ja, welcher Datentyp wurde dort benutzt

    Comment


    • #3
      Ja, beide. In der Kundentabelle die Kundennummer. In der Fibu-Tabelle die Buchungsnummer. Beides AutoInc-Werte

      Comment


      • #4
        Hallo,

        da die BDE über LOCAL SQL diese Fähigkeiten nur simulieren muss, würde ich ausprobieren, ob diese Simulation bei einer JOIN-Abfrage zu einem besseren Ergebnis führt.
        <pre>
        SELECT
        *
        FROM
        FIBU.DB FI JOIN KUNDEN.DB KU ON (FI.KUNDENNUMMER = KU.KUNDENNR)
        WHERE
        KU.PARENT=1076
        </pre>
        Im Idealfall wäre <i>FI.KUNDENNUMMER</i> ein Fremdschlüssel auf die Kundentabelle (da in diesem Fall automatisch ein passender Index zur Verfügung steht)

        Comment


        • #5
          Das ist ja der Hammer!

          Danke für den Tip! Funktioniert tadellos

          Comment


          • #6
            Hallo,

            nochmal eine Frage zu dem Thema:

            Jetzt muß ich ein DELETE-Statement ausführen. Beim Select geht der hier vorgestellte Weg mit dem Join, aber beim Delete natürlich nicht.

            Ich kanne also nur ... IN (SELECT ....) schreiben, das mag die BDE aber auch beim Delete nicht.

            Wie kann ich das Problem beim Delete umgehen

            Comment

            Working...
            X