Newsgroup: it.comp.lang.delphi
Titolo: Missing DriveName property

Ciao a tutti, ho un problema che non mi piace.
Stavo utilizzando i dbexpress su un progetto di prova:
Una Main che richiama un frame con all'interno due tSimpleDataSet legati in master-detail.
Questo frame usa il datamodule con all'interno la SQLConnection.
 
Il problema si presenta quando apro il progetto: quando apro il frame in progettazione compare l'errore :"Missing DriveName property". Andando a vedere il SimpleDataSet trovo che 'perde' la connection con la SQLConnection. Questo non succede se apro prima il datamodule.
 
Riassumendo, dopo aver aperto il progetto:
1- Apro il datamodule
2- Apro il frame
Tutto ok.

 con all'interno due tSimpleDataSet legati in master-detail.
 
...xche oggetti di accesso ai dati su un frame e non sul datamodule? :-|
 
A.

 
 
Perchè avendo 'n' frame da gestire (con n non definito a priori ma in aumento) avrei molti oggetti sul datamodule. Questo mi aumenta la difficoltà di gestione del progetto. In questo modo invece aprendo il frame ho tutto quello che mi serve.
Per caso hanno già inventato le cartelle all'interno del datamodule per organizzarlo meglio? :)
 
Hai mai sentito dell'errore che riporto sopra?

 Per caso hanno già inventato le cartelle all'interno del datamodule 
 
Che io sappia no!
 
A.
 
 

 
 
A questo non avevo pensato. Un datamodule per la connessione più un datamodule per ogni frame.
Si moltiplicano gli oggetti del progetto ma può essere un'idea...

Prova a impostare la sqlconnection usando un diverso driver dbx, tipo Oracle.
Lo scopo non è connettersi ma solo vedere se fa lo stesso casino.
 
A.

> Prova a impostare la sqlconnection usando un diverso driver dbx, tipo Oracle.
 
Niente, stesso problema. Sembra proprio che il SimpleDataSet se non è preventivamente aperto il datamodule della sqlconnection nell'IDE, non riesca a ricreare il link corretto nel campo connection e rimetta quello di default.
 
Rigooglando per cercare qualche info (sono 3 giorni che provo) ho trovato un forum brasiliano che riporta il mio stesso problema, ma il post è del 2006! Mi sembra evidente che sia un vecchio problema mai risolto...

 
 
Tra l'altro, provando ad aggiungere un TSQLTable nello stesso frame, il problema si ha solo sul SimpleDataSet, il TSQLTable invece ripropone la corretta impostazione del campo Connection.

 Sembra proprio che il SimpleDataSet se non è preventivamente aperto il datamodule della sqlconnection nell'IDE, non riesca a ricreare il link corretto nel campo connection e rimetta quello di default.
 
Sì, è un vecchio bug, però onestamente ricordavo che fosse stato risolto in generale (dato che si verificava anche con altri componenti), ma potrebbe essere rimasto sul componente "SimpleDataSet" per qualche motivo.
 
Io comunque non farei uso di quel componente, che ne integra diversi al suo interno, ma piuttosto userei dei tradizionali *TSQLDataSet* da mettere nel DataModule per rappresentare la query di interrogazione o il comando da eseguire sul DB, e metterei nei singoli Frame un *TDataSetProvider* e un *TClientDataSet* per la cache dei dati a scopo di visualizzazione/modifica lato client.
 
Ciao,
  Marco.
 
-- 
MARCO BREVEGLIERI
#Home: 
http://www.marco.breveglieri.name
 
#Blog: 
http://www.compilaquindiva.net
 

 Io comunque non farei uso di quel componente, che ne integra diversi al suo interno, ma piuttosto userei dei tradizionali *TSQLDataSet* da mettere nel DataModule per rappresentare la query di interrogazione o il comando da eseguire sul DB, e metterei nei singoli Frame un *TDataSetProvider* e un *TClientDataSet* per la cache dei dati a scopo di visualizzazione/modifica lato client.
 
Concordo pienamente sul CDS sul frame per popolare i controlli visuali
(anche se con il livebinding probabilmente cambiera' qualcosa...)
ma come mai metti anche il provider sulla parte visuale? Non e'
meglio metterlo sul datamodule? 
 
ciao
Giacomo

 Non e' meglio metterlo sul datamodule? 
 
Magari in quella "videata", che sia un Form o un Frame, può esserci l'esigenza di configurare in modo diverso il provider che trasporta i dati in cache nel CDS al database che sta dietro: in questo caso, avere diversi DSP può essere utile.
 
Se non c'è questa esigenza, allora se ne può mettere uno solo nel DataModule e visibile a tutti i Form/Frame così come hai detto tu.
 
Ciao!
