eroos Posted June 28, 2007 Posted June 28, 2007 Het volgende: Stel ik heb de volgende regels code 1 waarde 2 code 1 waarde -1 code 2 waarde 1 code 2 waarde -3 Nu wil ik een import doen in een ander tabel waarbij alleen de regels met een unieke code en de laagste waarde worden meegenomen. dus: code 1 waarde -1 code 2 waarde -3 hoe verkrijg ik dat? Quote
0 Captain Haddock Posted June 28, 2007 Posted June 28, 2007 Bedoel je dat van alle unieke codes alleen de laagste moet worden geimporteerd? Quote
0 eroos Posted June 28, 2007 Author Posted June 28, 2007 Ik heb de laagste waarden nodig per product. Dit is namelijk het te kort wat besteld moet worden. Ik wil van alle honderden producten alleen het laagste cumulatieve waarden per product hebben, zodat ik per product maar 1 bestelregel heb. Deze moeten vervolgens van de orderregels naar de bestelregels geimporteerd worden. Quote
0 Rony Rabijns Posted June 28, 2007 Posted June 28, 2007 De file die je gaat importeren is een FM-file ? Zo ja, zorg dan eerst dat je een gevonden reeks hebt die voldoet aan je vraag. (via een script is dat relatief eenvoudig te bekomen) Als je daarna importeert, heb je wat je vroeg. Quote
0 eroos Posted June 28, 2007 Author Posted June 28, 2007 Het is allemaal binnen filemaker 8.5 Een zoekopdracht met alle waarden kleiner dan 0 is geen probleem. Ik zie alleen even niet hoe ik kan laten zoeken op de laagste waarde. Quote
0 Rony Rabijns Posted June 28, 2007 Posted June 28, 2007 De kleinste is toch niet noodzakelijk negatief ... opletten dus. Dus moet je het over een andere boeg gooien : Sorteer je records eerst op code oplopend en dan op waarde oplopend. Maak een script dat alle records doorloopt. Het eerste record van een reeks records met dezelfde code heeft nu de laagste waarde in het veld waarde staan. Dat veld markeer je, of omit je, dat moet je zelf bekijken. Na je loop, zoek je dan de gemarkeerde records of de ge-omitte-records. Die gevonden reeks importeer je. En klaar is Kees. Een andere weg die je kan bewandelen, is de relationele weg : Maak een selfjoin en gebruik de functie Min() ... Quote
0 Captain Haddock Posted June 28, 2007 Posted June 28, 2007 Ik zou het inderdaad ook met een selfjoin doen. Unieke waarden opzoeken doe je zoals in de help beschreven staat: Zo vindt u dubbele records, met uitzondering van de eerste vermelding: 1. Als u van plan bent de dubbele records die u vindt, te verwijderen, maakt u eerst een reservekopie van het bestand. Zie Bestanden opslaan en kopiëren voor meer informatie. 2. Geef een veld op dat een unieke eenheid in uw bestand bepaalt. In een database Contactpersonen kunt u bijvoorbeeld beter niet het veld Achternaam opgeven, omdat er mogelijk meer mensen met dezelfde achternaam zijn. U kunt dan beter het veld Sofi-nummer opgeven. U kunt ook een berekeningveld maken (dat als resultaat een tekst geeft) waarin gegevens uit verschillende velden worden gecombineerd tot een unieke ID. Maak bijvoorbeeld een formule Voornaam & Achternaam & Telefoonnummer. 3. Definieer een interne relatie. Gebruik uw gekozen identificerend veld als het vergelijkingsveld in beide tabellen in de relatie. Zie Interne relaties voor meer informatie. De primaire record is de eerste overeenkomende record volgens de sorteervolgorde die in de relatie is gedefinieerd. 4. Definieer twee velden: Teller, een tekstveld met een automatisch ingevoerd volgnummer (selecteer Volgnummer en accepteer de standaardwaarden voor Volgende en Verhogen met). Dubbele waarden controleren, een berekeningsveld dat een tekst als resultaat geeft, met de formule: If(Teller = tabel1::Teller, "Uniek" : "Dubbele waarde") 5. Kies op de menubalk Records > Alle records tonen. 6. Klik in het nieuwe veld Teller en kies op de menubalk Records > Veldinhoud vervangen en daarna Vervangen door volgnummers. Accepteer opnieuw de standaardwaarden. Selecteer Volgnummer in Invoeropties bijwerken en klik op Vervangen. Hiermee wijst u een serienummer toe aan alle bestaande records in uw database. In nieuwe records worden volgnummers automatisch ingevoerd. 7. Voer in het veld Dubbele waarden controleren een zoekopdracht uit voor Dubbele waarde. De eerste record in elke verzameling dubbele waarden bevat nu de waarde "Uniek" in het veld Dubbele waarden controleren en alle dubbele records in dezelfde serie zijn als "Dubbele waarde" gemarkeerd. Belangrijk Records met een leeg vergelijkingsveld worden gemarkeerd als dubbels. Wanneer u de bovenstaande instellingen hebt gedefinieerd, worden dubbele records onmiddellijk automatisch door het systeem geïdentificeerd wanneer ze worden gemaakt. En als je vervolgens de unieke records selecteert, kun je aan de hand van een script de records langs en met min() de minimale waarde bepalen. Of je maakt een lijst, dan heb je alles in een overzicht. Wat je wil. Quote
0 hbrendel Posted June 28, 2007 Posted June 28, 2007 Als je de self-join op het betreffende veld sorteert, dan is het record met de laagste waarde vanzelf het eerste record, dat je vervolgens kunt tonen (of opslaan of wat je maar wilt ... ) Quote
0 eroos Posted June 28, 2007 Author Posted June 28, 2007 Heren, Ik zal morgen eens even kijken. Jullie slaan de spijker op zijn kop voor wat betreft de selfjoin. Ik heb hier namelijk al een poging mee gedaan maar die was tot nu toe vruchtenloos. De oplossing door de laagste waarde eerst te ommitten is tevens een optie om te bekijken... maar niet zo snel als met een selfjoin. Neem aan dat de selfjoin op de unieke code gemaakt dient te worden? Bedankt zover! En gefeliciteerd met het nieuwe bezoekersrecord! Quote
0 Rony Rabijns Posted June 28, 2007 Posted June 28, 2007 Neem aan dat de selfjoin op de unieke code gemaakt dient te worden? Inderdaad, de selfjoin maak je op het veld CODE. (en de inhoud daarvan is bij jouw niet uniek want anders had je je vraag niet hoeven stellen ) Quote
0 eroos Posted June 29, 2007 Author Posted June 29, 2007 Ik heb een voorbeeld bestand gemaakt om mijn dilemma wat inzichtelijker te maken mbt de selfjoin. Misschien wil ik iets wat niet kan maar daar zijn we dan snel achter. Waar het om gaat is dat ik per orderregel alleen de laagste waarde exporteer. Je kan zoeken om negatieve waarden. Immers dat zijn de tekorten. Ik hoef daarom alleen de negatiefste waarde te hebben om te exporteren. Als ik met een selfjoin kan werken dan geeft dat een betrouwbaarder resultaat. voorbeeld.fp7 Quote
0 Rony Rabijns Posted June 29, 2007 Posted June 29, 2007 Je berekeningsveld "Laagste_VoorraadNiveau" was helemaal verkeerd (zie bijlage voor de juiste berekening) voorbeeld.fp7 Quote
0 eroos Posted June 29, 2007 Author Posted June 29, 2007 Bedankt rony! Ik heb me hier helemaal blind op lopen staren! Hopelijk komt er nu weer schot in de zaak. Quote
Question
eroos
Het volgende:
Stel ik heb de volgende regels
code 1 waarde 2
code 1 waarde -1
code 2 waarde 1
code 2 waarde -3
Nu wil ik een import doen in een ander tabel waarbij alleen de regels met een unieke code en de laagste waarde worden meegenomen. dus:
code 1 waarde -1
code 2 waarde -3
hoe verkrijg ik dat?
12 answers to this question
Recommended Posts
Join the conversation
You can post now and register later. If you have an account, sign in now to post with your account.