AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem
Thema durchsuchen
Ansicht
Themen-Optionen

Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

Ein Thema von waldforest · begonnen am 2. Mai 2014 · letzter Beitrag vom 5. Mai 2014
Antwort Antwort
Seite 1 von 2  1 2      
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#1

Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:36
Datenbank: FIREBIRD • Version: 2.1 • Zugriff über: zeos 7.1.3a
Hallo,
ich nutze eine normierte Datenbank, in der z.B. in der Rechnungstabelle über die Kundennummer in einer Kundentabelle auf den Kundennamen verwiesen wird.

Zur Anzeige meinr Rechnungsdaten incl. Kundennamen in einm DBGRID habe ich zwei Varianten ausprobiert, keine ist optimal.

1.) Ich habe den Kundennamen über ein Lookup im Query ergänzt. Der Nachteil ist nun, wenn ich in der Rechnungsdatenbank nach bestimmten Kunden filtern will, dass dies auf dieses Lookupfeld nicht möglich ist.

2.) Ich habe den Kundennamen über einen INNER JOIN im Query integriert. Nun funktionier der Filter, aber ich kann den Datensatz nicht in den EDIT-Modus bringen, da dies über verbundene Tabellen nicht möglich ist.

Gibt es eine Möglichkeit, wie eine Filterung, aber auch eine weiter Bearbeitung des Datensatzes möglich ist, wie könnte diese aussehen ?
mfg wf
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:45
Hallo...

Ohne deine Arbeit zu schmälern... Du bist auf den Klassiker aufgelaufen. Datensensitive Controls sind für "einfache" Sachen geeignet. Mit steigenden Anforderungen wird das immer schwieriger bzw. ist nur mit Workarounds zu Workarounds lösbar.
Ich kann dir nicht wirklich helfen, da es so ist wie du schon beschrieben hast. Ich kann dir nur empfehlen dich in absehbarer Zeit von den datensensitiven Controls zu verabschieden. Dabei mußt du dich um das Laden, Darstellen, Editieren und Speichern selbst kümmern. Für diese Mehrarbeit wirst du aber auch belohnt mit Controls welche bisher nicht nutzbar waren (keine DB Anbindung) um damit ein besseres Aussehen zu ermöglichen.


Geändert von haentschman ( 2. Mai 2014 um 19:52 Uhr)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#3

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:46
Wie willst du denn filtern?

Wenn du eine LIKE Suche über den Kundennamen möchtest, dann suche dir separat die passenden Kunden-IDs und filtere damit deine Sätze.

@haentschman

Das DBGrid hat mit dem Filtern nichts zu tun. Welches Control stellt sich denn da quer?
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
Benutzerbild von haentschman
haentschman

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

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:51
Zitat:
Das DBGrid hat mit dem Filtern nichts zu tun.
Zitat:
...aber auch eine weiter Bearbeitung des Datensatzes möglich ist...
Er will aber auch editieren. Das ist mit der gejointen Datenmenge nicht drin. (2.)
  Mit Zitat antworten Zitat
Benutzerbild von Sir Rufo
Sir Rufo

Registriert seit: 5. Jan 2005
Ort: Stadthagen
9.454 Beiträge
 
Delphi 10 Seattle Enterprise
 
#5

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:53
Zitat:
Das DBGrid hat mit dem Filtern nichts zu tun.
Zitat:
...aber auch eine weiter Bearbeitung des Datensatzes möglich ist...
Er will aber auch editieren. Das ist mit der gejointen Datenmenge nicht drin. (2.)
Der JOIN ist ja auch nicht nötig ...
Kaum macht man's richtig - schon funktioniert's
Zertifikat: Sir Rufo (Fingerprint: ‎ea 0a 4c 14 0d b6 3a a4 c1 c5 b9 dc 90 9d f0 e9 de 13 da 60)
  Mit Zitat antworten Zitat
mkinzler
(Moderator)

Registriert seit: 9. Dez 2005
Ort: Heilbronn
39.858 Beiträge
 
Delphi 11 Alexandria
 
#6

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 19:54
Man kann die Abfrage aber editierbar machen, indem man Update/Delete/Insert-SQL Abfragen hinterlegt (bei Zeos im UpdateSQL-Objekt)
Markus Kinzler
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#7

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 20:12
Würde sich da nicht das Erstellen eines Views anbieten?
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#8

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 20:26
Hallo,
erst einmal vielen Dank für die Tipps, Hinweise zu datensensitiven Komponenten, Subabfrage etc. .

Ich habe den Tipp mit dem Zeos UpdateSQL einmal verfolgt (es klappt) und denke, dass dies, zumindest aktuell die schnellste Lösung ist.
Mal sehen, wann und wo ich an erneute Grenzen stoße.

Das Thema Views habe ich bisher noch nicht verfolgt, denke aber, dass dies eines meiner nächsten Entwicklungsschritte in meiner Hobbyprogrammierung sein werden.
mfg wf
  Mit Zitat antworten Zitat
Perlsau
(Gast)

n/a Beiträge
 
#9

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 2. Mai 2014, 20:47
Das Thema Views habe ich bisher noch nicht verfolgt, denke aber, dass dies eines meiner nächsten Entwicklungsschritte in meiner Hobbyprogrammierung sein werden.
Ein View ist im Prinzip nichts anderes als ein spezielles Select-Ergebnis, das in der Datenbank vorgehalten wird. Es werden dabei keine weiteren Tabellen erzeugt. Ich verwende Views sehr häufig, z.B. als Report-Basis oder eben zum leichteren Selektieren, Filtern und Sortieren. Ein View kannst du quasi als Tabelle behandeln und daher via Query-Komponente genau so abrufen wie jede andere Tabelle.

Im IbExpert erstellt man ein View, indem man im DB-Baum einen Rechtsklick auf Views ausführt und Neues View wählt. Bevor ich dir jetzt alles haarklein erkläre, hilft dir vielleicht ein Beispiel, das ich in meiner Projektverwaltung einsetze und das mir alle relevanen Kundendaten in einer quasi virtuellen Tabelle präsentiert:
Code:
CREATE OR ALTER VIEW A_KUNDEN(
    KUNDE_INDEX,
    KUNDE_FIRMA,
    KUNDE_NACHNAME,
    KUNDE_VORNAME,
    KUNDE_STRASSE,
    KUNDE_HNR,
    KUNDE_PLZ,
    KUNDE_ORT,
    KUNDE_BANK,
    KUNDE_BLZ,
    KUNDE_PAN,
    KUNDE_BIC,
    KUNDE_KONTO,
    KUNDE_NAME_FULL,
    KUNDE_STRASSE_FULL,
    KUNDE_ORT_FULL,
    KUNDE_GESCHLECHT,
    KUNDE_ANREDE,
    KUNDE_LAND,
    KUNDE_EMAIL,
    KUNDE_HOMEPAGE,
    KUNDE_FESTNETZ,
    KUNDE_HANDY,
    KUNDE_MEMO,
    KUNDE_ZEIT,
    KUNDE_ZEIT_STRING,
    KUNDE_PROJEKTE,
    KUNDE_BETRAG,
    KUNDE_ABSENDER,
    KUNDE_SORTTEXT)
AS
select

KUNDE.IDX_KUNDE,
KUNDE.FIRMA,
KUNDE.KONTAKT_NACHNAME,
KUNDE.KONTAKT_VORNAME,
KUNDE.STRASSE,
KUNDE.HAUSNR,
KUNDE.PLZ,
KUNDE.ORT,
BLZ.KURZ,
BLZ.BLZ,
BLZ.PAN,
BLZ.BIC,
KUNDE.KONTO,
KUNDE.KONTAKT_VORNAME || ' ' || KUNDE.KONTAKT_NACHNAME,
KUNDE.STRASSE || ' ' || KUNDE.HAUSNR,
KUNDE.PLZ || ' ' || KUNDE.ORT,
GESCHLECHT.GESCHLECHT,
GESCHLECHT.ANREDE,
LAND.LAND,
KUNDE.EMAIL,
KUNDE.HOMEPAGE,
KUNDE.FESTNETZ,
KUNDE.HANDY,
KUNDE.KUNDE_MEMO,
KUNDE.ZEIT,
KUNDE.ZEIT_STRING,
KUNDE.PROJEKTZAHL,
KUNDE.PROJEKTBETRAG,
KUNDE.FIRMA || ' ·  ' || KUNDE.STRASSE || ' ' || KUNDE.HAUSNR || ' ·  ' || KUNDE.PLZ || ' ' || KUNDE.ORT,
B_TABELLEN.A_KUNDEN_SORTTEXT

from KUNDE
inner join GESCHLECHT on GESCHLECHT.IDX_GESCHLECHT = KUNDE.GESCHLECHT
inner join LAND       on LAND.IDX_LAND             = KUNDE.LAND
inner join BLZ        on BLZ.IDX_BLZ               = KUNDE.BANKVERBINDUNG
inner join B_TABELLEN on B_TABELLEN.BENUTZER       = KUNDE.BENUTZER
;
Miniaturansicht angehängter Grafiken
viewresult.jpg  
  Mit Zitat antworten Zitat
waldforest

Registriert seit: 8. Mai 2005
366 Beiträge
 
Delphi XE3 Enterprise
 
#10

AW: Filter auf LOOKUP-Feld, alternative INNER JOIN und Editproblem

  Alt 4. Mai 2014, 19:52
Hallo,
vielen Dank, noch eine Nachfrage, Views dienen nur zum Anzeigen, ist also immer READ ONLY, oder lassen sich hierüber auch die Daten bearbeiten ?
mfg wf
  Mit Zitat antworten Zitat
Antwort Antwort
Seite 1 von 2  1 2      


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 02:00 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