PDA

Visualizza la versione completa : Implementare relazione master/detail tra componenti IBDataSet


FilSWS
18-09-2006, 17:11
Non riesco a trovare informazioni su come fare una relazione master/detail tra due IBDataSet.
So che devo lavorare sulle query, ma non riesco ad andare oltre.
Qualcuno sa indicarmi un link o in velocità come si fanno a creare...

Grazie per la pazienza
Ciao a tutti

alka
18-09-2006, 18:13
Per impostare una relazione master/detail devi fare uso della proprietà DataSource per collegare il componente IBDataSet di dettaglio al proprio DataSet principale.

L'implementazione avviene esprimendo i campi da collegare nelle proprietà contenenti gli statement SQL usando la notazione comunemente adottata per i parametri, usando cioè il carattere dei due punti (:) facendo seguire il nome del campo della tabella "master" e inserendo la condizione di uguaglianza nella clausola WHERE.

Ad esempio, supponendo di avere una tabella "master" CLIENTI e una tabella "detail" di FATTURE, è possibile specificare nella proprietà SelectSQL del primo DataSet la stringa



SELECT * FROM Clienti


Per implementare il master/detail, il secondo DataSet va collegato al primo e nella proprietà SelectSQL andrai a specificare qualcosa come



SELECT * FROM Fatture
WHERE IDCliente = :IDCliente


dove :IDCliente rappresenta il nome del campo da prelevare nella tabella "master" per instaurare il legame.

Ciao! :ciauz:

FilSWS
18-09-2006, 19:07
Grazie, gentilissimo.

FilSWS
19-09-2006, 17:40
Fin qui tutto ok, sto sperimentando adesso i componenti di Interbase e non riesco a trovare una giuda in internet...
Abiutuato con i componenti standard per gestire i DB mi trovo un po in difficoltà.
Per esempio, dopo aver creato un record premo il bottone salva ( dove collegate ci sono tutte le procedure per i controlli ecc ecc) fila tutto liscio ma quando arrivo all'istruzione POST (ho provato anche con APPLYUPDATE e ecc) mi si pianta (nonostante il record sia su una tabella vuota e tutti gli accorgimenti del caso) restituendomi il seguente errore:

"LOCK CONFLICT ON NO WAIT TRANSACTION"

Cosa sto dimenticando?

Grazie

alka
19-09-2006, 23:07
La documentazione di InterBase Express (IBX) è unita alla documentazione degli altri componenti. Hai controllato? :stordita:

FilSWS
20-09-2006, 13:55
Si ho visto ma cercavo qualcosa con dei tutorial o degli esempi da scaricare.
Grazie ancora

alka
20-09-2006, 14:38
Non ho Delphi davanti, quindi non posso verificare, ma prova a dare una sbirciata alla cartella Demos presente nella directory di installazione di Delphi.

Ciao! :ciauz:

Loading