HF und UF

20/02/2008 - 23:35 von sandro | Report spam
Hallo,

ich habe ein Problem mit einem HF und UF, im HF habe ich Auftragsnummer die
ich mir Anzeigen lassen kann und ich will im UF mir die Unter-Auftragnummer
im Listenfeld anzeigen lassen.

Also so welche Nummer benutzen wir:

A-70912
A-78987
A-41789

und jetzt gibt es noch ànliche Nummern:

A-70912-001
A-70912-002
A-78987-001

und ich möchte wenn ich über eine suche gehe und suche die Nummer A-70912
das er mit im UF (Listenfeld) auch diese anzeigt:

A-70912-001
A-70912-002

Ich hàtte es gern anders gelöst, aber bei uns in der Firma ist das so
gewachsen und es gibt ca. 50.000 Datensàtze, und ich habe keine Lust diese
alle zu àndern.

CU

Sandro Pauka
 

Lesen sie die antworten

#1 Henry Habermacher
21/02/2008 - 05:26 | Warnen spam
Hallo Sandro

Voller Realname wird hier gerne gesehen. Danke.

sandro wrote:
ich habe ein Problem mit einem HF und UF, im HF habe ich Auftragsnummer
die ich mir Anzeigen lassen kann und ich will im UF mir die
Unter-Auftragnummer im Listenfeld anzeigen lassen.

Also so welche Nummer benutzen wir:

A-70912
A-78987
A-41789

und jetzt gibt es noch ànliche Nummern:

A-70912-001
A-70912-002
A-78987-001



Da scheint in der Normalisierung was schief gelaufen zu sein. Die Child
Datensàtze sollten die ID des Masterdatensatzes in eimem Feld und die
Nummerierung in einem zweiten Feld drin haben. Aber es geht auch so.

und ich möchte wenn ich über eine suche gehe und suche die Nummer A-70912
das er mit im UF (Listenfeld) auch diese anzeigt:

A-70912-001
A-70912-002



Du musst halt nun einfach den Filter des UFO Listenfeldes so setzen, dass
dieses nur die Datensàtze anzeigt, welche folgende Bedingung erfüllen:

UnterAuftragsNummer LIKE Me.Parent!AuftragsNummer & '-*'

Des weiteren musst Du beim Anzeigen Ereignis des HFs dann eben das Filter
des UFs àndern.
Wie man abhàngige Listenfelder einsetzt, findest Du in der FAQ beschrieben.
Leicht umgemüntzt funktioniert das hier genau gleich.

Ich hàtte es gern anders gelöst, aber bei uns in der Firma ist das so
gewachsen und es gibt ca. 50.000 Datensàtze, und ich habe keine Lust diese
alle zu àndern.



Wieso Du, das macht doch Access, z.B. so:

ALTER TABLE UnterAuftraege ADD COLUMN PositionsNr LONG

UPDATE TABLE UnterAuftraege SET PositionsNr = VAL(RIGHT(UnterAuftragsNr, 3))

ALTER TABLE UnterAuftraege ADD Column AuftragsNr LONG

UPDATE TABLE UnterAuftraege SET AuftragsNr = VAL(MID(UnterAuftragsNr, 3, 5))

Analog dann für die Auftragstabelle und schlussendlich noch die
Referentielle Integritàt einrichten, indem Du den Primàrschlüssel der
Auftragstabelle auf das neue Feld AuftragsNr (LONG) und den Fremdeschlüssel
der Unterauftragstabelle über AuftragsNr auf das Feld AuftragsNr der
Auftragstabelle verweisen làsst.

Ist keine Hexerei und wenn die Daten sauber erfasst sind, dann geht das in
der Datenbank ohne dass Du einen Datensatz hàndisch àndern musst. Damit ist
dann aber nur der erste Teil gegessen. Danach geht es dann darum, die ganze
Anwendung so zu àndern, dass diese die neuen Felder bearbeitet und nicht
mehr die alten Felder, die Du nach dem Umbau dann wegschmeissen kannst. Und
für Auswertungen kannst Du dann die Unterauftragsnummer über ein Feld in
einer Query mittels

SELECT 'A-' & Format(AuftragsNr, '00000') & '-' & Format(PositionsNr, '000')
AS AlteUnterAuftragsnummer, ...
FROM UnterAuftraege
...

ermitteln lassen, so dass diese gar nicht merken, dass die Felder nicht mehr
in der Tabelle drin sind, sondern erst zur Laufzeit erzeugt werden.

Hoffe, Dir damit für eine künftige Anwendung einige Anregungen mit auf den
Weg gegeben zu haben. Die bestehende würde ich allerdings selber nicht
umbauen, das lohnt sich kaum.

Gruss
Henry


SEK2 Anmeldung: http://donkarl.com/?SEK
Microsoft MVP Office Access
Keine E-Mails auf Postings in NGs. Danke.
Access FAQ www.donkarl.com

Ähnliche fragen