Modificare TrueDBGrid

giovedì 15 maggio 2008 - 17.41

Franto Profilo | Junior Member

Ciao a tutti, nel mio gestionale vorrei utilizzare come grid il TrueDBGrid (ver. 6) ma un piccolo problemino....

Se lo collego a database, non ho nessun problema modificare record, aggiungerli, toglierli, ecc....

Se voglio utilizzarlo non collegato ad un database ( Me.Adodc1.Recordset.ActiveConnection = Nothing) non riesco più a modificare le celle.

Il mio scopo è questo :
1. Popolo il dbGrid da database (impostando tutto da codice)
2. Disconnetto il dbGrid
3. Effettuo le modifiche ai dati
4. Aggiorno il db e refresh sul dbGrid

Volevo fare così, per non dare l'accesso diretto al database.

Grazie

---------------------------------------------------------------------------------------------------------------

Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.

Brainkiller Profilo | Guru

>Ciao a tutti, nel mio gestionale vorrei utilizzare come grid
>il TrueDBGrid (ver. 6) ma un piccolo problemino....
>Se lo collego a database, non ho nessun problema modificare record,
>aggiungerli, toglierli, ecc....
>Se voglio utilizzarlo non collegato ad un database ( Me.Adodc1.Recordset.ActiveConnection
>= Nothing) non riesco più a modificare le celle.

Ciao,
non ho mai utilizzato il componente TrueDBGrid. Secondo, faccio uno sforzo di memoria e mi pare di ricordare, salvo dire una castroneria, che l'invenzione del DataSet in .NET, è stata utile tra gli altri motivi anche per il fatto che consentiva di lavorare in modalità disconnessa dal database levando eventuali lock a livello di dati e riducendo il numero di connessioni attive al database. Quindi se il DataSet era innovativo evidentemente prima non si poteva lavorare in modalità disconnessa in quel modo ?

Verificherei nel dettaglio anche la documentazione del TrueDBGrid per vedere se è consentito operare in questo modo.
Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

Franto Profilo | Junior Member

Grazie x la risposta.
Sapete se c'è qualcosa che possa farmi ottenere il funzionamento descritto sopra?

Mi sto rassegnando all'idea di dover gestire dei campi esterni al grid x ricerche, updates, ecc...
Anche se questa soluzione non mi piace x niente.....
--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.

Brainkiller Profilo | Guru

>Grazie x la risposta.
>Sapete se c'è qualcosa che possa farmi ottenere il funzionamento
>descritto sopra?

Forse passare a .NET ? E migrare la tua applicazione ? Il .NET DataAdapter fa proprio questo. Verifica quali record sono stati modificati e lancia le query (UPDATE/INSERT/DELETE) necessarie per sincronizzare i dati.

Ciao

David De Giacomi | Microsoft MVP
http://blogs.dotnethell.it/david/

assiolle Profilo | Junior Member

Perchè vuoi limitare l'accesso diretto al DB?
Se per validare i dati potresti tenere tutto sotto transazione ed una volta verificati Commit o rollback.

Oppure spero di ricordarmi, prova a lavorare con il clone del recordset.
Alessio
http://blogs.dotnethell.it/alessiop

Franto Profilo | Junior Member

Ciao, voglio limitare l'accesso principalmente x evitare errori di inserimento.
Poi perché il TDBGrid per "convalidare" la modifica deve fare una specie di refresh sull'occorrenza e questa la ottengo spostandomi con il fuoco su un altro record. Praticamente è lo stesso funzionamento di Access...

E' interessante il discorso della transazione, sai darmi qualche dritta su come si utilizza? O se conosci qualche tutorial

GRAZIE




--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.

assiolle Profilo | Junior Member

Mi pare tu lavori con ADO.
Allora puoi aprire un transazione sulla connessione e poi decidere se le modifiche apportate da quando apri la transazione a quando la chiudi devono essere salvate o meno.

Per esempio (spero di scrivere correttamente il codice )

cnnConnessione.BeginTrans

...Fai le tue operazioni nel recordset..(Addnew,Update....)

Infine se imposti

cnnConnessione.CommitTrans

salvi le modifiche nel DB, se invece dai

cnnConnessione.RollBackTrans

non salvi le modifiche

Alessio
http://blogs.dotnethell.it/alessiop

Franto Profilo | Junior Member

Ho dovuto faticare un pò x adattare e soprattutto gestire le transazioni attive, ma alla fine sono riuscito ad ottenere ciò che volevo, ossia non scrivere in real-time su database.

Grazie x l'aiuto!



--------------------------------------------------------------
Il destino è solo una giustificazione a ciò che è accaduto, che accade e che accadrà. Apriamo gli occhi e riprendiamoci la nostra vita.
Partecipa anche tu! Registrati!
Hai bisogno di aiuto ?
Perchè non ti registri subito?

Dopo esserti registrato potrai chiedere
aiuto sul nostro Forum oppure aiutare gli altri

Consulta le Stanze disponibili.

Registrati ora !
Copyright © dotNetHell.it 2002-2024
Running on Windows Server 2008 R2 Standard, SQL Server 2012 & ASP.NET 3.5