Delphi-PRAXiS

Delphi-PRAXiS (https://www.delphipraxis.net/forum.php)
-   Datenbanken (https://www.delphipraxis.net/15-datenbanken/)
-   -   Delphi ADS: Ein bestimmtes Datenfeld selektieren (https://www.delphipraxis.net/109335-ads-ein-bestimmtes-datenfeld-selektieren.html)

Mike_on_Tour 28. Feb 2008 10:00

Datenbank: ADS • Version: 8 • Zugriff über: ADS Components

ADS: Ein bestimmtes Datenfeld selektieren
 
Hallo,

ich habe folgendes Problem:

Es gibt zwei Tabellen: KUNDEN, LAND
In beiden Tabellen gibt es ein Feld mit der Abkürzung der Ländernamen (immer 3 Zeichen).
In der Tabelle LAND gibt es je ein Feld mit dem vollständigen Landesnamen in der jeweiligen Landessprache. Diese Felder sind immer mit "LandnameXXX" bezeichnet, wobei XXX die Abkürzung des Ländernamen ist.

Der Zugriff im Programm funktioniert. Es wird mit 'Table.FindField' geprüft, ob das Datenfeld mit der jeweiligen Landessprache (aus der Windowseinstellung) existiert. Gibt es das Datenfeld nicht, verwendet das Programm das Datenfeld "LandnameDEU" (Deutschland).

Beim Ausdruck (mit FastReport 3.23) der Kundenliste soll der Ländername in der jeweiligen Landessprache verwendet werden. Die Daten für den Report werden von einem Query bereitgestellt.

Mir ist momentan aber noch unklar, wie ich mit dem Query oder dem Report nur auf das Datenfeld "LandnameXXX" zugreifen und damit einen Platzhalter im Report befüllen kann.

Über ein paar Vorschläge würde ich mich freuen.

Mike

mkinzler 28. Feb 2008 10:11

Re: Ein bestimmtes Datenfeld selektieren
 
In dem du im Query filterst

Mike_on_Tour 28. Feb 2008 10:16

Re: Ein bestimmtes Datenfeld selektieren
 
Zitat:

Zitat von mkinzler
In dem du im Query filterst

Kannst Du da mal ein kleines Beispiel angeben, wie ich im Query eine Spalte filtern muß ?

Mike_on_Tour 29. Feb 2008 07:45

Re: Ein bestimmtes Datenfeld selektieren
 
Zitat:

Zitat von mkinzler
In dem du im Query filterst

Die richtige Antwort z.B. wäre gewesen: mit einem "StringReplace".

Union 29. Feb 2008 08:30

Re: ADS: Ein bestimmtes Datenfeld selektieren
 
Hallo,

ich würde an Deiner Stelle die Datenstruktur überarbeiten. Willst Du tatsächlich für jede neue Sprache ein weiteres Feld in der Tabelle anlegen? Mach lieber eine zweite Tabelle mit den landessprachlichen Landesbezeichnungen, dann kannst Du es z.B. so abfragen:

SQL-Code:
select isnull(laendernamen.bezeich, laender.bezeich) as Bezeich
from kunden
left outer join laender on laender.land = kunden.land
left outer join laendernamen on laendernamen.land_id = laender.id and laendernamen.sprache = Kunden.sprachcode
Im jeweiligen Laender-Datensatz ist dabei das Feld "bezeich" mit der deutschen Bezeichnung gefüllt. So bräuchtest Du immer nur neue Sprachen in die Laendernamen Tabelle anzufügen.

Beispiel Tabelle Länder:
Code:
Id Land Bezeich
1  DE  Deutschland
2  FR  Frankreich
Beispiel Tabelle Ländernamen:
Code:
Land_id Sprache Bezeich
1       DEU     Deutschland
1       FRA     Allemagne
1       ENU     Germany
1       ENG     Germany
2       FRA     France
2       SPA     Francia

Mike_on_Tour 29. Feb 2008 09:15

Re: ADS: Ein bestimmtes Datenfeld selektieren
 
Zitat:

Zitat von Union
Willst Du tatsächlich für jede neue Sprache ein weiteres Feld in der Tabelle anlegen?

Im Moment handelt es sich um max. 3 bis 5 Sprachen (de,en,dk,pl,cz) und ich müßte eine schnelle Lösung bieten. Da ist eine Tabelle gerade noch ausreichend und der Austausch im Query mit einer einzigen Programmzeile auch sehr einfach.
Zitat:

Zitat von Union
Mach lieber eine zweite Tabelle mit den landessprachlichen Landesbezeichnungen, dann kannst Du ...

Dein Vorschlag ist sehr gut. In der nächsten Programmversion kann ich das dann realisieren. Besten Dank.


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