# Recent QSOs and Filters ## The Recent QSOs grid The main log table. Double-click a row to edit; **right-click** for everything else (see [The right-click menu](#the-right-click-menu) below). Columns are configurable — click **Columns** to choose which are visible; widths, order and hidden columns are saved (per profile), with a separate layout for the narrower Main-tab pane. - The selected-row count is always visible at the top, and a **Select all / Unselect all** button takes every displayed row. - QSL and upload status columns are coloured: **Y** green, **N** red, **R** blue, **V** (verified) green — a LoTW contact marked *V* counts as confirmed everywhere, like *Y*. - A **Distance (km)** column (also in Worked-before) is computed from the QSO's own locator pair. - There are **no per-column header filters** — they only ever searched the rows on screen, which made a QSO further back in the log look missing. Use the advanced filter, which queries the whole logbook. A QSO logged from **WSJT-X, MSHV, JTDX or a net** appears here immediately, not when its auto-upload eventually goes out. That matters if you use a *delayed* upload to leave yourself time to correct a contact before it is sent. ### Award columns Each defined award can show a column with the reference the QSO counts for. These columns are **hidden by default** and opt-in from the Columns picker. --- ## The right-click menu Select one or more rows, right-click, and the menu acts on **the whole selection**. Right-clicking a row that is not selected selects it first, so a single right-click on one QSO always does what it looks like it will. | Entry | What it does | |---|---| | **Fix country & zones from cty.dat** | Re-derives DXCC, continent, CQ and ITU zones from the prefix database. Use after a cty.dat update, or on QSOs imported without zones. | | **Update from the callsign databases** | Re-queries QRZ.com / HamQTH per QSO. A network round trip each — a progress bar appears. | | **Update from ClubLog (exceptions)** | Applies Club Log's exception list: callsigns whose real entity is not what the prefix says. | | **Update US county from the ULS database** | Re-derives the county of US contacts and **replaces** what is stored. Only appears once the county database is downloaded — see [[Awards]]. | | **Send OpsLog QSL by e-mail** | Renders the [[QSL Card Designer]] card for that QSO and mails it. | | **Bulk edit field…** | One field, one value, on every selected QSO. Leaving the value **empty clears** the field. | | **Export selected to ADIF / Cabrillo** | Just the rows you picked. | | **Export selected — choose fields…** | Same, but you pick which ADIF fields go in the file. | | **Export filtered view to ADIF / Cabrillo** | **Every QSO the current filter matches** — not only the rows on screen, and with no row limit. | | **Send to QRZ / Club Log / HRDLog / eQSL / LoTW** | Uploads the selection now, whatever the automatic upload mode is. | | **Delete…** | With a confirmation naming the count. | > **Exporting a filtered search is two different entries.** *Export selected* > takes the rows you highlighted. *Export filtered view* takes the whole result > of the filter, including the QSOs scrolled off the bottom. When you have just > built a filter and want the lot, it is the second one. --- ## Advanced filter builder Click the filter button to open the **QSO filter builder** (Log4OM-style). - Add one or more **conditions**: *field · operator · value*. - Operators: equals, not-equal, contains, starts/ends with, greater/less (or equal), is empty, is not empty. - Fields include every confirmation **status and date** (sent / received, before / after) for paper QSL, LoTW, eQSL, Club Log, HRDLog and QRZ.com. Field names stay in English — they are ADIF names, a standard vocabulary. - Join the conditions with **ALL (AND)** or **ANY (OR)**. - Save named **presets** (they travel with the `data/` folder). A filter shows **every** match — the on-screen row limit only applies to the unfiltered log (safety cap 10 000). ### Worked examples Each of these is a few clicks in the builder. The point of the last column is what you then do with the result. **1. Everything worked on 20 m in FT8 that is still unconfirmed on LoTW** | Join | Field | Operator | Value | |---|---|---|---| | ALL | `band` | equals | `20m` | | | `mode` | equals | `FT8` | | | `lotw_qsl_rcvd` | is empty | | → right-click → **Export filtered view to ADIF**, and you have the file to re-upload or to check against LoTW. **2. Paper cards sent but never answered, older than a year** | Join | Field | Operator | Value | |---|---|---|---| | ALL | `qsl_sent` | equals | `Y` | | | `qsl_rcvd` | is empty | | | | `qso_date` | less than | `20250816` | → select all → **Bulk edit field** to mark them for a bureau chase, or export them for a follow-up list. **3. Every contact with one entity, on any band, in a date range** | Join | Field | Operator | Value | |---|---|---|---| | ALL | `dxcc` | equals | `291` | | | `qso_date` | greater or equal | `20260101` | | | `qso_date` | less or equal | `20261231` | → this is the shape for an award submission. Save it as a **preset** so next year is one click and a date change. **4. Anything that might be a duplicate of tonight's run** | Join | Field | Operator | Value | |---|---|---|---| | ALL | `call` | contains | `DL` | | | `band` | equals | `40m` | | ANY | `qsl_sent` | equals | `Y` | | | `lotw_qsl_sent` | equals | `Y` | Note the mix: the **ALL** block narrows to the contacts you care about, the **ANY** block accepts a QSO confirmed by either route. **5. US contacts with no county recorded** | Join | Field | Operator | Value | |---|---|---|---| | ALL | `dxcc` | equals | `291` | | | `cnty` | is empty | | → select all → right-click → **Update US county from the ULS database**. ### Tips - **Dates are ADIF dates**: `YYYYMMDD`, no separators. `20260816`, not `16/08/2026`. - **`is empty` is not the same as `equals N`.** A QSL that was never sent is empty; one explicitly marked *not sent* holds `N`. Filters on confirmation usually want *is empty*. - To find what a field is called, show its column in the grid: the Columns picker and the filter builder use the same ADIF names. - A preset saves the conditions, not the results — it re-runs against the log as it is today. --- ## Worked-before matrix As you type a callsign, the worked-before grid shows prior contacts with that **entity**, arranged by band/mode slot, so you instantly see what's new (new DXCC / new band / new slot) versus already worked. Its right-click menu offers the same bulk edit and export as the main grid.