filter vraag

Status
Niet open voor verdere reacties.

Jos Van den Bro

Gebruiker
Lid geworden
25 mei 2006
Berichten
66
Hallo,

Ik heb een tabel met een A en B veld als tekst en een C veld als ja/nee.

Bestaat de mogelijkheid wanneer ik een een filter unieke records met A en B maak daarna alle ja/nee velden kan selecteren of deselecteren via sql of vba?

Dank bij voorbaat.

groeten

Jos
 
voorbeeld doet wonderen

stuur even een voorbeeldje

dat doet wonderen
 
Leg eerst eens uit wat je bedoelt, want ik snap er niks van. En dan heb ik aan een voorbeeldje ook niks. Bovendien hoeft dat wat mij betreft niet voor een simpele filtervraag. Mits ik dus snap wat de bedoeling is :).
 
Hallo,

Ik ga dit proberen uit te leggen via afbeeldingen.

Ik heb volgende tabel:

tabel.jpg

Hierna filter ik met unieke waardes met: SELECT DISTINCT test.[toestel], test.[serieNR]
FROM test;

dit geeft als resultaat:

filter.jpg


Nu zou ik graag de selectie vakjes "type_ser" willen selecteren van deze 5 overgebleven resultaten. Hoe ga ik te werk? Is dit mogelijk via SQL of via VBA?

Dit wil ik gebruiken in een tabel met meerdere velden.

groeten

Jos
 
Laatst bewerkt:
Nu zou ik graag de selectie vakjes "type_ser" willen selecteren van deze 5 overgebleven resultaten.
Dit snap ik nog steeds niet; die selectie kun je toch al meenemen in de query? Yes of No, meer smaken zijn er niet.
Wat je sowieso nooit kan, maar dat komt doordat je DISTINCT gebruikt, is de dynaset muteren.
Dit wil ik gebruiken in een tabel met meerdere velden
Zullen we het daar maar niet over hebben? :).
 
Laatst bewerkt:
Ja maar als ik de selectie vakjes meeneem in de filter dan houd deze ook rekening met de selectie vakjes (die eventueel al eens aangevinkt waren) en krijg ik een ander resultaat.

SELECT DISTINCT test.[toestel], test.[serieNR], test.[type_ser]
FROM test;


filter1.jpg
 
Leg eens uit wat je wilt; ik blijf het niet snappen.
 
In mijn vorig antwoord zat een foutje.

Als ik de query uitvoer zonder dat er al vakjes geselecteerd zijn in de tabel krijg ik het volgend gewenste resultaat:

SELECT DISTINCT test.[toestel], test.[serieNR], test.[type_ser]
FROM test;


filter2.jpg

Nadeel hier is dan dat ik geen vakje kan aanvinken (alle automatisch) en dat is juist mijn bedoeling hier en valt dit dan op te lossen via SQL of VBA of andere weg?

Wanneer er reeds vakjes aangevinkt zijn in de tabel (bovenaan volgend voorbeeld) verkrijg ik het volgend ongewenste resultaat na uitvoering van de filter.

result1.jpg

groeten

Jos
 
Nadeel hier is dan dat ik geen vakje kan aanvinken (alle automatisch) en dat is juist mijn bedoeling hier en valt dit dan op te lossen via SQL of VBA of andere weg?
Dát probleem heb ik al beantwoord in bericht #5. Even herhalen: dat kan dus niet. En dat is ook logisch: zodra je gaat groeperen, praat je niet meer over individuele records. Een veld aan- of uitzetten doe je per record. Je zult dus de complete tabel moeten zien om te muteren. Wél kun je daarbij een filter gebruiken als je alleen niet-geselecteerde records wilt zien. Maar je kunt dan dus niet groeperen. Een SQL oplossing is er niet (je query ís al SQL tenslotte) en VBA gaat je hier ook niet bij helpen, omdat je dan ook een recordset moet openen.
Maar nog steeds begrijp ik de bedoeling niet: wil je alles in één keer omzetten? Of individuele records kunnen kiezen (al dan niet gefilterd)?
 
Hallo,

Wat ik eigenlijk wil doen is het volgende:

Ik heb een database van vliegtuigen die ik gefotografeerd heb. Deze gegevens in de database hebben een exclusief nummer (index),registratie, type, serienummer, maatschappij, datum, plaats enz.

Nu wil ik een selectievakje aanvinken (automatisch in een form) wanneer ik een vliegtuig voor het eerst gezien heb met bv te gaan kijken op type en serienummer zodat ik kan filteren op eerste maal gezien. (zelfde vliegtuig kan meerdere malen voorkomen en er zijn verschillende types mogelijk met eenzelfde serienummer).

Ik dacht dit te doen met een filter met unieke waarden maar dit is blijkbaar niet mogelijk via deze weg.

Kan dit eventueel via een filter als je georderd hebt op type en serienummer en zo de eerste er uit te halen?


groeten

Jos
 
Laatst bewerkt:
Je hebt vast een tabel met vliegtuiggegevens. Daarin is elk vliegtuig(record) uniek, neem ik aan. In die tabel past ook een veld [Spotdatum] want elk vliegtuig kan je maar één keer voor de eerste keer spotten/fotograferen. Op basis van dat gegeven snap ik je probleem dus niet, maar ik vermoed dat je het vinkje in de verkeerde tabel hebt gezet.
 
De bedoeling is hier dat ik wanneer ik bv type: Airbus 320 met serienr: 123 ingeef en deze is nog niet aanwezig dat het selectievakje typ_ser automatisch wordt aangevinkt.

Deze data zijn niet uniek omdat ik hetzelfde vliegtuig meerdere malen kan te zien krijgen maar elke foto heeft wel zijn eigen chronologisch nummer.

Ook dat wanneer ik toevallig foutief ingegeven heb het selectievakje moet kunnen aanpassen. Dit geeft tot gevolg dat ik dan terug moet kunnen bepalen wanneer ik het vliegtuig voor de eerste maal gezien heb als deze op een later tijdstip ook nogmaals voorkomt. Momenteel doe ik dat via een form waar ik via een filter heb geordend op type en serienummer en volgnummer en dan doorloop ik de hele database om zo dan te bepalen welke ik eerst heb gezien. Een nadeel hierbij is dat dit een hele tijd in beslag neemt. (+50000 records) en misschien bestaat er hiervoor een andere methode.

For jos = 1 To slide (= aantal records)
DoCmd.GoToRecord , , acGoTo, jos
If Not SERIAL = zoek_serial Then
typ_ser = True
Else: typ_ser = False
End If
zoek_serial = SERIAL
Next jos

Wat ik nu al doe is dat wanneer ik nieuwe data ingeef ga kijken met een dcount op type en serienummer en indien resultaat 0 is ik typ_ser true maak:
typserialzoek = DCount("*", "dia", "[toestel] = '" & [zoektype] & "' And [serial] = '" & [zoekserial] & "'")

If typserialzoek = 0 Then
typ_ser = True
Else: typ_ser = False
End If

groeten

Jos
 
Spreek je jezelf niet een beetje tegen? Hier zeg je:
Nu wil ik een selectievakje aanvinken (automatisch in een form) wanneer ik een vliegtuig voor het eerst gezien heb met bv te gaan kijken op type en serienummer zodat ik kan filteren op eerste maal gezien.

En nu maak je er van:

Deze data zijn niet uniek omdat ik hetzelfde vliegtuig meerdere malen kan te zien krijgen maar elke foto heeft wel zijn eigen chronologisch nummer.
Dat snap ik, dat je één vliegtuig meerdere keren kan zien. Maar er is hoe je het ook wendt of keert, maar één eerste keer :). En dat bepaalt toch het vinkje?
 
.. en dan doorloop ik de hele database om zo dan te bepalen welke ik eerst heb gezien.
Dat is inderdaad niet de handigste methode. Mits je de waarnemingen en foto's correct vastlegt in de db, heb je ook een datum+tijd van het moment van de foto. Desnoods haal je die met VBA uit de metadata van de foto's. Daarbij gebiedt de logica dat de foto moet de oudste datum en het vroegste tijdstip het eerste record is. En daar kun je perfect op querien zonder dat je DISTINCT hoeft te gebruiken, wat je query onbruikbaar zou maken. Dus dan heb je van alle vliegtuigen één record, en wel de oudste, en daar zet je dan het vinkje mee. Kan volledig automatisch, zoals je zult begrijpen.
 
Na nog wat zoeken heb ik het nodige bereikt.

Nog een klein vraagje: Wanneer je met verschillende actiequeries werkt via een macro, kan je dan de meldingen voor het valideren van de acties (tijdelijk) negeren en dit zonder klikken laten doorgaan?

groeten

Jos
 
Voor de meelezers (want die hebben niet veel aan jouw antwoord ;) ):
DoCmd.SetWarnings False zet de waarschuwingen uit. Niet vergeten om ze daarna met SetWarnings True weer aan te zetten!
 
Status
Niet open voor verdere reacties.

Nieuwste berichten

Terug
Bovenaan Onderaan