Veld dubbel gebruiken

Red-Eagle
Member Posts: 107
Ik ben een rapport aan het maken, waarbij er bij een gekozen project een element moet worden weergeven. Dit op zich is niet moeilijk, maar ik wil er teksten tussen doen, waarbij een voorwaarde gecreerd wordt waar een element aan moet voldoen.
Bijvoorbeel:
Kast
element 01.10.0100
element 01.10.0200
Bekabeling
element 01.20.0100
element 01.20.0200
Als in het element *.10.* voorkomt dan moet het element worden weergeven onder kast en als het element *.20.* moet het element worden weergeven worden onder bekabeling. Daarnaast moet element *.10.0000 worden uitgesloten.
Het zijn dus eigenlijk twee tabellen, dus naast element komt nog een omschrijving, datum etc.
Dit is wat ik nu heb gecreerd, maar dit functioneert nog van geen kanten:
"Project Element".SETRANGE("Project No.", Job."No.");
IF "Project Element".FIND('-') THEN BEGIN
IF STRPOS("Project Element".Element,'.10.') > 0 THEN
elementkast := "Project Element".Element;
omschrijvingkast := "Project Element".Description;
END ELSE BEGIN
IF STRPOS("Project Element".Element,'.20.') > 0 THEN
elementbekabeling := "Project Element".Element;
IK weet niet of het nodig is om de element steeds een ander naam te geven (elementkast en elementbekabeling) en of je dit ook bij de velden moet doen die erbij horen.
Ik hoop dat het een beetje duidelijk is, in ieder geval alvast bedankt voor de hulp
Bijvoorbeel:
Kast
element 01.10.0100
element 01.10.0200
Bekabeling
element 01.20.0100
element 01.20.0200
Als in het element *.10.* voorkomt dan moet het element worden weergeven onder kast en als het element *.20.* moet het element worden weergeven worden onder bekabeling. Daarnaast moet element *.10.0000 worden uitgesloten.
Het zijn dus eigenlijk twee tabellen, dus naast element komt nog een omschrijving, datum etc.
Dit is wat ik nu heb gecreerd, maar dit functioneert nog van geen kanten:
"Project Element".SETRANGE("Project No.", Job."No.");
IF "Project Element".FIND('-') THEN BEGIN
IF STRPOS("Project Element".Element,'.10.') > 0 THEN
elementkast := "Project Element".Element;
omschrijvingkast := "Project Element".Description;
END ELSE BEGIN
IF STRPOS("Project Element".Element,'.20.') > 0 THEN
elementbekabeling := "Project Element".Element;
IK weet niet of het nodig is om de element steeds een ander naam te geven (elementkast en elementbekabeling) en of je dit ook bij de velden moet doen die erbij horen.
Ik hoop dat het een beetje duidelijk is, in ieder geval alvast bedankt voor de hulp
0
Comments
-
Hi,
Dit is niet zo moeilijk maar het is wel moeilijk om uit te leggen, zeker omdat mijn Nederlands hard aan achteruit gaan is. ](*,)
Ik zou zeker kijken is of het mogelijk is om een tijdelijk (temporary = Yes) record variabele te definieren met de "Project Element" als de tabel.
Dan kan je deze tabel gebruiken om tijdelijk je gegevens in op te slaan. Ik zou dan het veld "Project No." misbruiken om "Kast" of "Bekabeling" in op te slaan en dan de rest van dit record zou een kopie kunnen zijn van het originele element record.
De sleutel van zo'n tijdelijk record zou er dan alsvolgt uitzien:
1. Project No. : "Kast"
2. Element. No. : "01.10.0100"
Dan kan je deze tabel gebruiken als een dataitem in een rapport sectie.
Je kan deze tijdelijke tabel als volgt vullen:TijdelijkElement.RESET; TijdelijkElement.DELETEALL; "Project Element".SETRANGE("Project No.", Job."No."); IF "Project Element".FINDSET(FALSE,FALSE) THEN BEGIN REPEAT CLEAR(TijdelijkElement); TijdelijkElement.INIT; CASE TRUE OF STRPOS("Project Element".Element,'.10.') > 0: TijdelijkElement."Project No." := 'KAST'; STRPOS("Project Element".Element,'.20.') > 0: TijdelijkElement."Project No." := 'BEKABELING'; .... // Andere mogelijke element types END; IF TijdelijkElement."Project No." <> '' THEN BEGIN TijdelijkElement."Element" := "Project Element".Element; TijdelijkElement."Description" := "Project Element".Description ... //andere velden als benodigd IF TijdelijkElement.INSERT THEN; END; Until "Project Element".Next = 0; END;
Ik hoop dat dit je op de goede weg zet.
Met vriendelijke groet,
WillyFostering a homeless, abused child is the hardest yet most rewarding thing I have ever done.0 -
Willy
Bedankt voor je reactie, ik zal het binnenkort (waarschijnlijk volgende week) eens uittesten.
Met je nederlands is trouwens weinig mis.0 -
Beste Willy,
Het werkt nog niet echt. Voorlopig blijft het rapport pagina's creeren. Wat heb ik gedaan. Ten eerste heb ik onder dataitems een integer aangemaakt die hangt onder project. (Volgens mij moet ik hier nog een koppeling maken met de tijdelijke tabel in c/al code). In deze integer heb ik bij de code jouw code geplakt:
Integer - OnPreDataItem()
TijdelijkElement.RESET;
TijdelijkElement.DELETEALL;
"Project Element".SETRANGE("Project No.", Job."No.");
IF "Project Element".FINDSET(FALSE,FALSE) THEN BEGIN
REPEAT
CLEAR(TijdelijkElement);
TijdelijkElement.INIT;
CASE TRUE OF
STRPOS("Project Element".Element,'.10.') > 0: TijdelijkElement."Project No." := 'KAST';
STRPOS("Project Element".Element,'.20.') > 0: TijdelijkElement."Project No." := 'BEKABELING';
// Andere mogelijke element types
END;
IF TijdelijkElement."Project No." <> '' THEN BEGIN
TijdelijkElement.Element := "Project Element".Element;
TijdelijkElement.Description := "Project Element".Description;
//andere velden als benodigd
IF TijdelijkElement.INSERT THEN;
END;
UNTIL "Project Element".NEXT = 0;
END;
Daarnaast heb ik bij C/AL Globals de tijdelijkelement aangemaakt met record project element. Vervolgens heb ik op het rapport in de section Integer body een veld uit deze tabel geplakt, helaas verschijnt er bij draaien van het rapport nog niks.
Tevens zit ik nog met een ander probleem wat denk ik nog niet helemaal duidelijk is. Hoe krijg ik het voor mekaar dat ik twee kopjes kan maken en daar de informatie onder krijg. Dus eerst de kast met de elementen die daar aan voldoen en vervolgens de bekabeling met de elementen die daar aan voldoen.
Kast omschrijving datum uren
element 1
element 2
etc
Witte regels in rapport
Bekabeling omshrijving datum uren
element 1 (die voldoen aan de voorwaarde kast)
element 2 (die voldoen aan de voorwaarde kast)
Hopelijk is het zo wat duidelijker.0 -
Om eerlijk te zijn denk ik dat je beter aan je data model kunt sleutelen. Wat je hier doet, een betekenis geven aan een deel van een veld, moet je niet doen. Stop deze betekenis in een apart veld, zodat je later geen problemen krijgt al bijvoorbeeld later de sleutel wijzigt d.m.v. een RENAME, of wanneer men beslits een andere vorm van naamgeving te gaan gebruiken. Op deze manier kun je Navision de koppeling laten leggen en hoef je het niet via code te doen.0
Categories
- All Categories
- 73 General
- 73 Announcements
- 66.6K Microsoft Dynamics NAV
- 18.7K NAV Three Tier
- 38.4K NAV/Navision Classic Client
- 3.6K Navision Attain
- 2.4K Navision Financials
- 116 Navision DOS
- 851 Navision e-Commerce
- 1K NAV Tips & Tricks
- 772 NAV Dutch speaking only
- 617 NAV Courses, Exams & Certification
- 2K Microsoft Dynamics-Other
- 1.5K Dynamics AX
- 320 Dynamics CRM
- 111 Dynamics GP
- 10 Dynamics SL
- 1.5K Other
- 990 SQL General
- 383 SQL Performance
- 34 SQL Tips & Tricks
- 35 Design Patterns (General & Best Practices)
- 1 Architectural Patterns
- 10 Design Patterns
- 5 Implementation Patterns
- 53 3rd Party Products, Services & Events
- 1.6K General
- 1.1K General Chat
- 1.6K Website
- 83 Testing
- 1.2K Download section
- 23 How Tos section
- 252 Feedback
- 12 NAV TechDays 2013 Sessions
- 13 NAV TechDays 2012 Sessions