PDA

Visualizza la versione completa : [delphi] ibdataset OnFilterRecord


123delphi321
11-05-2015, 18:51
Ciao a tutti,

in un db ho 10 tabelle ognuna delle quali


CREATE TABLE TABELLA01(
ID INTEGER NOT NULL PRIMARY KEY,
ITEM VARCHAR(100));

nel mio programma delphi, per ogni tabella inserisco:
IBdataset + datasource...che utilizzo per inserire e modificare i dati della tabella.

IBquery + datasource..che utilizzo per visualizare nei camp di lookup

sono diversi anni che utilizzo questa tecnica e funziona....

vorrei rendere più leggibile il programma e avevo pensato di ridurre il numero delle tabelle creandone una unica :



CREATE TABLE TABELLA01(
ID INTEGER NOT NULL PRIMARY KEY,
tipotabella INTEGER,
ITEM VARCHAR(100));

sfruttando l'evento OnFilterRecord del componente ibdataset.

ma in questo modo avrei problemi con i campi di lookup quando quando in una schermata devo selezionare record di riferimento alla tabella1 e alla tabella2.....

Voi che tecnica utilizzate per memorizzare queste tabelle? usate n tabelle o una unica tabella?

grazie

alka
13-05-2015, 12:52
Usare l'evento OnFilterRecord non è ottimale, perché il filtro avviene sul client e non sul server, quindi di fatto scarichi anche i dati delle altre "tabelle" (virtuali) per selezionare solo nel client i dati che ti interessano.

A parte questo, il lookup si può sempre fare basandolo su più campi, e non solamente uno.

Nel tuo caso specifico, se ho capito bene cosa vuoi ottenere, filtra direttamente la tabella in base al campo "tipotabella" nella query SQL che utilizzi nel componente IBDataSet.

Ciao! :ciauz:

123delphi321
13-05-2015, 20:54
Ciao,

il mio obiettivo è quello di inserire un unic ibdataset+ datasource per tutte le tabelle del programma.


A parte questo, il lookup si può sempre fare basandolo su più campi, e non solamente uno.
dove si definiscono?



Nel tuo caso specifico, se ho capito bene cosa vuoi ottenere, filtra direttamente la tabella in base al campo "tipotabella" nella query SQL che utilizzi nel componente IBDataSet.


su una form inserisco 5 campi lookup tutti che attingono dati dallo stessa ibdataset+datasource.
il lookup lo effetuo tramite la chiave ID che è univoca e visualizzo bene i dati.

il problema è quando si apre la tendina per la selezione del record voluto.
dovrei fare in modo che per il

campo1 visualizzo solo i record con tipotabella=1
campo2 visualizzo solo i record con tipotabella=2
campo3 visualizzo solo i record con tipotabella=3
....

se modifico la query SQL 'select * from tabella where tipotabella=3 ' succede che campo1 e campo2 perdono (a video) la referenza del record

forse non h ben capito come suggerisci?

grazie

Loading