Discussione:
Dal record della query a quello del dataset
(troppo vecchio per rispondere)
Stark
2021-01-24 17:52:14 UTC
Permalink
Volevo sostituire una query alla table mostrata in un DBGrid, ma una volta
fatta la scelta di un record nel dbgrid, poi ho bisogno di operare nel
corrispondente record della table. Qual è il modo migliore di passare
dall'uno all'altro ?
Daniele
2021-01-25 10:04:31 UTC
Permalink
Ciao Stark
Post by Stark
Volevo sostituire una query alla table mostrata in un DBGrid, ma una
volta fatta la scelta di un record nel dbgrid, poi ho bisogno di operare
nel corrispondente record della table. Qual è il modo migliore di
passare dall'uno all'altro ?
Se ti dico che non ho capito .... ti offendi ??

Tento comunque ...
Se hai una DBGrid non ti devi preoccurare di molto in quanto fa tutto lei.
Avendo un DataSet ogni riga della griglia punta gia' al suo
corrispondente record; Ovvero indipendentemente da quello che visualizzi
in griglia, hai tutti gli alri dati del record accessibili con fieldbyname.

Ciao

Daniele
Stark
2021-01-26 16:03:11 UTC
Permalink
Daniele non ho risposto al tuo messaggio pensando che avresti letto quanto
risposto aa Alberto..

"Daniele" ha scritto nel messaggio news:rum53e$10fs$***@gioia.aioe.org...

Ciao Stark
Post by Stark
Volevo sostituire una query alla table mostrata in un DBGrid, ma una volta
fatta la scelta di un record nel dbgrid, poi ho bisogno di operare nel
corrispondente record della table. Qual è il modo migliore di passare
dall'uno all'altro ?
Se ti dico che non ho capito .... ti offendi ??

Tento comunque ...
Se hai una DBGrid non ti devi preoccurare di molto in quanto fa tutto lei.
Avendo un DataSet ogni riga della griglia punta gia' al suo
corrispondente record; Ovvero indipendentemente da quello che visualizzi
in griglia, hai tutti gli alri dati del record accessibili con fieldbyname.

Ciao

Daniele
Alberto Salvati
2021-01-25 10:48:46 UTC
Permalink
La griglia non SA e non DEVE sapere se il dato le arriva da query table etc.
Qual č il modo migliore di passare
dall'uno all'altro ?
Al solito, hai le idee confuse.
Facciamo un pass indietro: con la table come fai? posta un po di codice.

A.
Stark
2021-01-25 18:37:43 UTC
Permalink
Questo messaggio potrebbe essere inappropriato. Clicca per visualizzarlo
Alberto Salvati
2021-01-26 08:12:04 UTC
Permalink
Quindi, il tuo problema non è capire su quale record sei ma come modificare il record corrente, giusto?
Che oggetto query usi?

A.
Stark
2021-01-26 16:01:25 UTC
Permalink
Uso TQuery e il BDE. Il risultato della query potrebbe essere teoricamente
modificabile, ma a condizioni tanto vincolanti che non è possibile usare
questa modalità

"Alberto Salvati" ha scritto nel messaggio news:e6576da7-f339-44a6-bad6-***@googlegroups.com...

Quindi, il tuo problema non è capire su quale record sei ma come modificare
il record corrente, giusto?
Che oggetto query usi?

A.
Alberto Salvati
2021-01-26 16:41:19 UTC
Permalink
Ancora con il BDE, obsoleto da decenni e matenuto solo per retrocompatibilità.
Comunqte, BDE mette a disposizione un automatisco per gestire operazioni di aggiornamento su una TQuery.
Post by Stark
Il risultato della query potrebbe essere teoricamente
modificabile, ma a condizioni tanto vincolanti che non è possibile usare
questa modalità
Onestamente, non ho capito.

A.
Stark
2021-01-26 19:58:15 UTC
Permalink
Lo so, non te lo volevo dire ..
L'automatismo a cui accenni ha condizioni che ne limitano fortemente l'uso,
tipo che la query non può usare l'order by etc. Non me le ricordo le
condizioni in questo momento, ma tutte le volte che ho provato, ci ho dovuto
poi rinunciare.
No, devo trovare un altro modo, tipo acquisire una chiave con la quale
agganciare il corrispondente record della Table.
Non mi decido mai a fare la migrazione, perchè per me questo è ormai un
hobby, anche se contemporaneamente mi dispiace non farla, perchè sono
ridotto a usare VMWare per far girare in ambiente Windows 7 alcune utility
BDE che su Windows 10 danno problemi. Ma invecchiando lo sento un compito
troppo arduo. Dovrei trovare qualcuno che mi instradi, mi faccia fare i
passi che poi potrei completare anche da solo. Peccato che c'è il Covid,
sennò l'avrei chiesto anche a te..
Cosa ne diresti ?


"Alberto Salvati" ha scritto nel messaggio news:bde7351a-2b71-4f20-929d-***@googlegroups.com...

Ancora con il BDE, obsoleto da decenni e matenuto solo per
retrocompatibilità.
Comunqte, BDE mette a disposizione un automatisco per gestire operazioni di
aggiornamento su una TQuery.
Post by Stark
Il risultato della query potrebbe essere teoricamente
modificabile, ma a condizioni tanto vincolanti che non è possibile usare
questa modalità
Onestamente, non ho capito.

A.
Enrico Giudici
2021-01-28 17:19:28 UTC
Permalink
Post by Stark
Lo so, non te lo volevo dire ..
L'automatismo a cui accenni ha condizioni che ne limitano fortemente l'uso,
tipo che la query non può usare l'order by etc. Non me le ricordo le
condizioni in questo momento, ma tutte le volte che ho provato, ci ho dovuto
poi rinunciare.
No, devo trovare un altro modo, tipo acquisire una chiave con la quale
agganciare il corrispondente record della Table.
Non mi decido mai a fare la migrazione, perchè per me questo è ormai un
hobby, anche se contemporaneamente mi dispiace non farla, perchè sono
ridotto a usare VMWare per far girare in ambiente Windows 7 alcune utility
BDE che su Windows 10 danno problemi. Ma invecchiando lo sento un compito
troppo arduo. Dovrei trovare qualcuno che mi instradi, mi faccia fare i
passi che poi potrei completare anche da solo. Peccato che c'è il Covid,
sennò l'avrei chiesto anche a te..
Cosa ne diresti ?
Ancora con il BDE, obsoleto da decenni e matenuto solo per
retrocompatibilità.
Comunqte, BDE mette a disposizione un automatisco per gestire operazioni di
aggiornamento su una TQuery.
Post by Stark
Il risultato della query potrebbe essere teoricamente
modificabile, ma a condizioni tanto vincolanti che non è possibile usare
questa modalità
Onestamente, non ho capito.
A.
Ciao Stark,
se ho ben capito io farei così, nella query estrai anche la chiave univoca che identifica il record da modificare, dopodichè visualizzi solo i campi che ti interessano che possono essere anche i campi che fanno parte della chiave, quando devi effetuare l'update i campi chiave li hai in canna e puoi fare l'update secco.
Spero di essere stato chiaro e spero di non averti detto una castroneria.
Ciao da Enrico Giudici c/o Anthelios
Stark
2021-01-29 11:06:19 UTC
Permalink
Grazie. In effetti ho pensato di fare come credo tu mi abbia suggerito
Quando clicco sul record del DBGrid , acquisisco i valori dei campi e li
metto in un pannello di edit. per la modifica. Con la chiave del record
accedo alla Table usando "locate" e scrivo i dati editati prelevando i
valori dagli edit. Un pò macchinoso, ma mi pare di non aver trovato altro
modo.
Post by Stark
Lo so, non te lo volevo dire ..
L'automatismo a cui accenni ha condizioni che ne limitano fortemente l'uso,
tipo che la query non può usare l'order by etc. Non me le ricordo le
condizioni in questo momento, ma tutte le volte che ho provato, ci ho dovuto
poi rinunciare.
No, devo trovare un altro modo, tipo acquisire una chiave con la quale
agganciare il corrispondente record della Table.
Non mi decido mai a fare la migrazione, perchè per me questo è ormai un
hobby, anche se contemporaneamente mi dispiace non farla, perchè sono
ridotto a usare VMWare per far girare in ambiente Windows 7 alcune utility
BDE che su Windows 10 danno problemi. Ma invecchiando lo sento un compito
troppo arduo. Dovrei trovare qualcuno che mi instradi, mi faccia fare i
passi che poi potrei completare anche da solo. Peccato che c'è il Covid,
sennò l'avrei chiesto anche a te..
Cosa ne diresti ?
Ancora con il BDE, obsoleto da decenni e matenuto solo per
retrocompatibilità.
Comunqte, BDE mette a disposizione un automatisco per gestire operazioni di
aggiornamento su una TQuery.
Post by Stark
Il risultato della query potrebbe essere teoricamente
modificabile, ma a condizioni tanto vincolanti che non è possibile usare
questa modalità
Onestamente, non ho capito.
A.
Ciao Stark,
se ho ben capito io farei così, nella query estrai anche la chiave univoca
che identifica il record da modificare, dopodichè visualizzi solo i campi
che ti interessano che possono essere anche i campi che fanno parte della
chiave, quando devi effetuare l'update i campi chiave li hai in canna e puoi
fare l'update secco.
Spero di essere stato chiaro e spero di non averti detto una castroneria.
Ciao da Enrico Giudici c/o Anthelios
Alberto Salvati
2021-01-29 13:10:41 UTC
Permalink
Post by Stark
Grazie. In effetti ho pensato di fare come credo tu mi abbia suggerito
Quando clicco sul record del DBGrid , acquisisco i valori dei campi
Cioè? Descrivi come intendi "acquisire i dati".
Post by Stark
metto in un pannello di edit. per la modifica. Con la chiave del record
accedo alla Table usando "locate"
Di quale TTable parli? Hai esordito dicendo che usi una query, TQuery, per la precisione.
A cosa ti serve locate? Se GIA' sul record da aggiornare.
Non usando più BDE da decenni, non ricordo le limitazioni all'uso di TUpdatSql.
Puoi per favore postare qua qualcosa relativo ai vincoli che la TQUery deve rispettare affinchè si possano gestire gli aggiornamenti usando TUpdateSql?

A.
Stark
2021-01-30 10:38:28 UTC
Permalink
Di quale TTable parli? ... Evidentemente non mi sono spiegato bene.
Attualmente, il mio DBGrid è associato direttamente alla TTable (tramite il
DataSource). Volevo sostituire alla TTable la TQuery e quindi nel DBGrid
avrei il risultato di una select. So che scorrendi il DBGrid, sono già sul
record da aggiornare, come hai detto, ma il record di un result set, che io
sappia, non è aggiornabile. Se dai questo per assodato, stavo elucubrando
sul modo di passare da quel record della query al record della Table.
'Acquisire' i dati voleva dire, con FieldByName, disporli su dgli edit per
la eventuale modifica e riacquisirli per scriverli sul record della Table e
il 'locate' serviva a trovare il record giusto.
Dire che il resutl set della query non è aggiornabile non è del tuto vero,
ma tutte le volte (poche) che ho provato nel lontano passato, mi sono
trovato di fronte a delle limitazioni. Mi ricordo, per esempio, che nella
select non si possono usare Distinct, Joins, Group by e non mi ricordo che
altro.
Invece 'TUpdateSql' che tu citi non lo conosco e potrei approfondire, ma mi
era sembrato meno complicato indagare sulla possibilità di passare dalla
query alla Table se fosse stato semplice.
Post by Stark
Grazie. In effetti ho pensato di fare come credo tu mi abbia suggerito
Quando clicco sul record del DBGrid , acquisisco i valori dei campi
Cioè? Descrivi come intendi "acquisire i dati".
Post by Stark
metto in un pannello di edit. per la modifica. Con la chiave del record
accedo alla Table usando "locate"
Di quale TTable parli? Hai esordito dicendo che usi una query, TQuery, per
la precisione.
A cosa ti serve locate? Se GIA' sul record da aggiornare.
Non usando più BDE da decenni, non ricordo le limitazioni all'uso di
TUpdatSql.
Puoi per favore postare qua qualcosa relativo ai vincoli che la TQUery deve
rispettare affinchè si possano gestire gli aggiornamenti usando TUpdateSql?

A.
Stark
2021-01-30 20:33:56 UTC
Permalink
Ho cercato notizie si TUpdateSql e, sulla base di roba quasi più vecchia di
me, ho cominciato a fare delle prove, che devo sospendere per una decina di
giorni perchè mi devo assentare per tronare alla città dei miei anni giovani
..
Post by Stark
Grazie. In effetti ho pensato di fare come credo tu mi abbia suggerito
Quando clicco sul record del DBGrid , acquisisco i valori dei campi
Cioè? Descrivi come intendi "acquisire i dati".
Post by Stark
metto in un pannello di edit. per la modifica. Con la chiave del record
accedo alla Table usando "locate"
Di quale TTable parli? Hai esordito dicendo che usi una query, TQuery, per
la precisione.
A cosa ti serve locate? Se GIA' sul record da aggiornare.
Non usando più BDE da decenni, non ricordo le limitazioni all'uso di
TUpdatSql.
Puoi per favore postare qua qualcosa relativo ai vincoli che la TQUery deve
rispettare affinchè si possano gestire gli aggiornamenti usando TUpdateSql?

A.

Continua a leggere su narkive:
Loading...