Förord
Om du har en lista från ett annat dataset kan du, istället för DBListBox och DBComboBox,
använda komponenterna DBLookUpComboBox och/eller TDBLookUpListBox. Dessa komponenter
är användbara vid tillfällen då du vill välja ett element i ett fält i en datauppsättning
för att lagra denna i en annan tabell.
Använda komponenterna
Om du till exempel har ett formulär för att hantera order från en kund har den
underliggande tabellen vanligen ett ID för att identifiera kunden som har skickat
beställningen. Att arbeta med kundens ID-nummer är inte det mest naturliga sättet.
De flesta användare vill säkert referera till kundens egentliga namn. Hur-som-helst
så är kundernas namn lagrade i en annan tabell i din databas. Detta för att undvika
duplikat för olika order av samma kund. För att göra en sådan situation så smidig
som möjligt för slutanvändaren kan du med fördel använda en DBLookUpComboBox-komponent.
Du hittar denna under fliken Data Controls i komponentpaletten.
Det fina i kråksången är att komponenten DBLookUpComboBox kan kopplas till två datakällor
samtidigt, en datakälla för lagrade data och en för data som skall visas för användaren.
Om vi ponerar att du har ett formulär som hanterar order och en tabell för dina kunder
kan du koppla en DBLookUpComboBox till datakällan för dina order och till fältet kundnr.
För att kunna visa information från en annan tabell (i detta fall tabellen kunder)
måste vi knyta en annan tabellkomponent som refererar till vår komponent. För att
programmet skall kunna fungera måste ett flertal egenskaper för DBLookUpComboBox1
ställas in.
object DBLookUpComboBox1: TDBLookupComboBox
DataSource = DataSource1
DataField = 'KundNr'
ListSource = DataSource2
KeyField = 'KundNamn'
ListField = 'KundNamn;Adress'
end
|
Dessa egenskaper etablerar en koppling till databasen och är
de viktigaste i uppslagskomponenten.
DataSource - Definierar huvudkopplingen
(i detta fall tabellen Order)
DataField - Fältet i vilket vi lagrar
det uppslagna värdet.
ListSource - Datakällan som innehåller
datasetet med uppslagsvärdena.
KeyField - Identifierar värdet i ListSource
som ska matcha fältet DataField.
ListSource - Ett (eller flera) fält i
uppslagsdatasetet som ska visas i kontrollen för användaren. Om du har flera fältnamn
skall dessa separeras med semikolon. Här blir du då tvungen att ställa in värdet i
egenskapen DropDownWidth så att alla kolumner blir synliga i uppslagskontrollen.
DBLookUpComboBox är alltså användbar när du snabbt vill hämta (slå upp) värden i en
annan dataupssättning för att sedan lagra dessa i din huvudtabell. Det finns tre tillfällen
då denna komponent kan vara särskilt användbar.
1. När du har ett formulär där alla redigeringar sker i en DBGrid. Du kan då skapa
ett uppslagsfält direkt i DBGrid-kontrollen. Detta går dock till på ett lite annorlunda
vis än vad som beskrivits ovan.
2. Om ditt formulär innehåller en rad andra kontroller såsom DBEdit, DBComboBox etc.
Du kan då använda en DBLookUpComboBox istället för att skapa ett nytt fält.
3. Du kan också använda komponenten för att använda kolumner i en DBGrid med hjälp
av dess PickList-egenskap. Detta blir ingen riktig uppslagsmetod i ordets rätta bemärkelse
med den kommer ändå att uppföra sig som en sådan. I PickList-listan kan användaren
välja ett värde från ett fält - precis som i en vanlig DBComboBox - men inuti en DBGrid.
Sammanfattningsvis
En DBLookUpComboBox (eller en DBLookUpListBox) är inte helt lätt att konfigurera.
Det kräver att flera komponenters egenskaper är rätt inställda. Det är också viktigt
att dina databastabeller är normaliserade på ett riktigt sätt. Jag själv hade mycket
huvudbry innan jag fick komponenten att fungera som jag ville, men när man överstigit
dessa svårigheter är det en mycket bra och användbar komponent. Inte minst sparar
det både tid och arbete för slutanvändaren.
Vid tangentbordet
/Staffan Berg