Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Persistent fields

32 views
Skip to first unread message

Stark

unread,
Jun 2, 2010, 1:17:43 PM6/2/10
to
Ho un componente Query nel mio form a cui non riesco a design time a
definire i campi con il field editor. Infatti come tento di eseguire 'Add
all fields' oppure anche 'Add field' ricevo una finestrella intitolata
'Error' che riporta il seguente messaggio:
Invalid parameter
File or directory does not exist.
File C.\Windows\system32\_QSQL000.DBF
Tbale does not exists.
Permission denied.
File C.\Windows\system32\_QSQL000.DBT

Uso Delphi 2007 e il BDE. Se aggiungo come componente la corrispondente
Table, a designtime posso tranquillamente definire tutti i suoi campi.
La query punta al percorso corretto (databaseneame) e nella property SQL
contiene la stringa 'select * from MyTable'.
Ho provato a definire nella stringa tutti i campi e il percorso intero alla
tablella senza nessun risultato.
Devo definire i campi della query perch� debbo definire un campo calcolato.
Il campo calcolato lo riesco a definire tranquillamente, ma poi se non ho
definiti gli altri campi in modo persistente , la quey li segnala come
mancanti.

Che sia un problema di Delphi2007 ?


Morde

unread,
Jun 3, 2010, 4:29:13 AM6/3/10
to
Stark ha spiegato il 02/06/2010 :

> Ho provato a definire nella stringa tutti i campi e il percorso intero alla
> tablella senza nessun risultato.

Il tuo problema credo che non abbia soluzione: suppongo che la presenza
dei campi calcolati imponga al DBE di crearsi delle tebelle di appoggio
il cui nome viene determinato al momento in cui servono, ossia runtime,
e non credo che sia predicibile. Questo comporta che tu non possa fare
uso dei campi persistenti per il campo calcolato.

Credo che sia inutile suggerirti di cercare al piᅵ presto un sostituto
della base dati attuale del tuo progetto:

http://kylecordes.com/bag/

ciao

--
Morde


Piero Salandin

unread,
Jun 3, 2010, 4:44:51 AM6/3/10
to
Il 02/06/2010 19:17, Stark ha scritto:

> File or directory does not exist.
> File C.\Windows\system32\_QSQL000.DBF
> Tbale does not exists.
> Permission denied.
> File C.\Windows\system32\_QSQL000.DBT

Magari è una stupidaggine: perché il punto invece di due punti come ci
si aspetterebbe in c:\blabla?

Inoltre: da quel che ricordo (è tanto che non uso BDE e ti consiglio
caldamente di migrare ^_^) ma quelel query sono temporanee e vengono
create dal BDE per fare le cose sue.


--
byez
Piero

Stark

unread,
Jun 3, 2010, 6:27:50 AM6/3/10
to
"Morde" <mo...@mailinator.com> ha scritto nel messaggio
news:4c07...@news.x-privat.org...

> Stark ha spiegato il 02/06/2010 :
>> Ho provato a definire nella stringa tutti i campi e il percorso intero
>> alla tablella senza nessun risultato.
>
> Il tuo problema credo che non abbia soluzione: suppongo che la presenza
> dei campi calcolati imponga al DBE di crearsi delle tebelle di appoggio il
> cui nome viene determinato al momento in cui servono, ossia runtime, e non
> credo che sia predicibile. Questo comporta che tu non possa fare uso dei
> campi persistenti per il campo calcolato.
>
> Credo che sia inutile suggerirti di cercare al più presto un sostituto
> della base dati attuale del tuo progetto:
>
> http://kylecordes.com/bag/
>
> ciao
>
> --
> Morde
>
>
E' un programma che ha più di 10 anni. E' monoutente e stand alone. Il BDE
non ha mai dato alcun problema e rifare tutto sarebbe troppo costoso, io
penso. Il problema che sto avendo (volendo aggiungere una funzionalità
all'applicazione) non l'ho mai avuto fino a poco tempo fa, quando lavoravo
con Delphi 6.


Morde

unread,
Jun 3, 2010, 7:13:36 AM6/3/10
to
Stark ha spiegato il 03/06/2010 :

> Il BDE non ha mai dato alcun problema e rifare tutto sarebbe troppo costoso,
> io penso

Credo che devi riconsiderare bene questo punto: analizza a cosa sono
legati i costi di sostituzione del motore DB, alla luce di un passaggio
ad un motore SQL based, ad esempio firebird.

Il tuo software con che struttura e' disegnato: pesante uso di oggetti
dbaware ? Classi che incapsulano i dati ? Wrapper grafici di classi ?

Ad ogni modo, se proprio non ne esci, ritorna a D6 : al limite
installalo in una macchina virtuale fatta apposta per la manutenzione
del tuo programma vecchio.

ciao

--
Morde


Stark

unread,
Jun 3, 2010, 2:40:50 PM6/3/10
to

"Piero Salandin" <piero.s...@eriador.it> ha scritto nel messaggio
news:5YJNn.887$3a4...@news.edisontel.com...

> Il 02/06/2010 19:17, Stark ha scritto:
>
>> File or directory does not exist.
>> File C.\Windows\system32\_QSQL000.DBF
>> Tbale does not exists.
>> Permission denied.
>> File C.\Windows\system32\_QSQL000.DBT
>
> Magari � una stupidaggine: perch� il punto invece di due punti come ci si
> aspetterebbe in c:\blabla?
>
> Inoltre: da quel che ricordo (� tanto che non uso BDE e ti consiglio
> caldamente di migrare ^_^) ma quelel query sono temporanee e vengono
> create dal BDE per fare le cose sue.
>
>
> --
> byez
> Piero
Scusa, ma ho semplicemente battuto male. Comunque ho verificato e il
problema si verifica con Delphi 2007 ma non si verifica con Delphi 6 ...

Stark

unread,
Jun 3, 2010, 2:44:44 PM6/3/10
to

"Morde" <mo...@mailinator.com> ha scritto nel messaggio
news:4c07...@news.x-privat.org...
Non ho idea dello sforzo implicito in un cambio verso Firebird. Uso si molti
oggetti DBAware, ma i soliti: cioè un pò tutti i tipi di grids, DBEdits..
Non ho idea di cosaa intendi per wrapper grafici di classi o clasi che
incapsulano i dati ..


Giacomo Degli Esposti

unread,
Jun 4, 2010, 5:17:53 AM6/4/10
to
On 2 Giu, 19:17, "Stark" <franco.jo...@tin.it> wrote:
> Ho un componente Query nel mio form a cui non riesco a design time a
> definire i campi con il field editor. Infatti come tento di eseguire 'Add
> all fields' oppure anche 'Add field' ricevo una finestrella intitolata
> 'Error' che riporta il seguente messaggio:
> Invalid parameter
> File or directory does not exist.
> File C.\Windows\system32\_QSQL000.DBF
> Tbale does not exists.
> Permission denied.
> File C.\Windows\system32\_QSQL000.DBT

Mi sembra di ricordare che nel bdeadmin ci fosse modo di
impostare la cartella in cui il BDE mette questi file
temporanei. Forse se non e' specificato nulla le due
versioni si comportano in modo diverso (anche se mi pare
strano perche il BDE e' sempre quello)

ciao
Giacomo

Brunello

unread,
Jun 4, 2010, 6:05:40 AM6/4/10
to
> Mi sembra di ricordare che nel bdeadmin ci fosse modo di
> impostare la cartella in cui il BDE mette questi file
> temporanei. Forse se non e' specificato nulla le due
> versioni si comportano in modo diverso (anche se mi pare
> strano perche il BDE e' sempre quello)

nel sorgente del modulo dati si deve inserire nella procedura
DataModuleCreate

Session.PrivateDir := 'C:\TEMP';

ciao Brunello

Stark

unread,
Jun 4, 2010, 10:59:02 AM6/4/10
to

"Brunello" <brune...@yahoo.it> ha scritto nel messaggio
news:74bffdbf-cf54-45ea...@j4g2000yqh.googlegroups.com...

Penso che siamo vicini alla soluzione.. ma devo capire meglio.
Cosa intendi per "sorgente del modulo dati" ?
Se intendi un form di classe TDataModule, in questa applicazione io non lo
uso.
Comunque ho provato in un altra dove ho un form TDataModule e ho provato a
creare nell'evento OnCreate le istruzioni che mi indichi.
procedure TBfDM.DataModuleCreate(Sender: TObject);
begin
Session.PrivateDir := 'C:\TEMP';
end;
Ma PrivateDir risulta un 'undeclared identifier'. Forse dovrei qualificarlo
in altro modo, ma come avrai capito, non ne so abbastanza.

E comunque se non ho un DataModule ? O non ho capito niente del tuo
suggerimento ?

PS: A suo tempo avevo modificato con il BDE Administrator la definizione
della NETDIR per non farla puntare alla root del C:\ e questa funziona ...

Stark

unread,
Jun 4, 2010, 12:52:00 PM6/4/10
to

"Brunello" <brune...@yahoo.it> ha scritto nel messaggio
news:74bffdbf-cf54-45ea...@j4g2000yqh.googlegroups.com...

Ho provato ad inserire le istruzioni precedenti semplicemente nell'On Create
del form e la compilazione va bene.
A design time però, se uso il field editor per definire i campi della query,
ricevo sempre lo stesso messagggio di errore.
Assumo che il componente Query non vada associato esplicitamente in qualche
modo a Session ... E' giusto ?

Luigi Siciliano

unread,
Jun 4, 2010, 1:00:55 PM6/4/10
to
Il 04/06/2010 18.52, Stark ha scritto:
>
>>
>> Session.PrivateDir := 'C:\TEMP';
>>
>> ciao Brunello
>
> Ho provato ad inserire le istruzioni precedenti semplicemente nell'On
> Create del form e la compilazione va bene.
> A design time però, se uso il field editor per definire i campi della
> query, ricevo sempre lo stesso messagggio di errore.
> Assumo che il componente Query non vada associato esplicitamente in
> qualche modo a Session ... E' giusto ?

Direi di verificare tramite il BDEAdmin (dal pannello di controllo) dove
punta la "NET DIR" (Configuration->Native->Paradox) e farla puntare in
una directory esistente e dove si hanno di sicuro i diritti di scrittura.

Ciao.

Stark

unread,
Jun 4, 2010, 1:45:25 PM6/4/10
to

"Luigi Siciliano" <l...@luigisiciliano.it> ha scritto nel messaggio
news:4c093154$0$18652$4faf...@reader3.news.tin.it...

> Il 04/06/2010 18.52, Stark ha scritto:
>>
>>>
>>> Session.PrivateDir := 'C:\TEMP';
>>>
>>> ciao Brunello
>>
>> Ho provato ad inserire le istruzioni precedenti semplicemente nell'On
>> Create del form e la compilazione va bene.
>> A design time per�, se uso il field editor per definire i campi della

>> query, ricevo sempre lo stesso messagggio di errore.
>> Assumo che il componente Query non vada associato esplicitamente in
>> qualche modo a Session ... E' giusto ?
>
> Direi di verificare tramite il BDEAdmin (dal pannello di controllo) dove
> punta la "NET DIR" (Configuration->Native->Paradox) e farla puntare in una
> directory esistente e dove si hanno di sicuro i diritti di scrittura.
>
> Ciao.
Allora, la NETDIR punta su una dir c:\temp e va bene, perch� Vista non
consente di puntare alla ubicazione che prenderebbe di default che sarebbe
c:\. E questa l'avevo gi� cambiata. Adesso il problema era un altro: e cio�
un componente TQuery a cui si volessero definire a designtime (ma il
problema c'� anche a runtime) dei campi persistenti non lo consente e d� il
messaggio di errore descritto nel mio primo messaggio.
Stimolato dal suggerimento di Brunello, ha fatto un testo di prova mettendo
in un form i componenti TSession, TDatabase e TQuery. Legandoli
opportunamente e ridefinendo la property PrivateDir del TSession in c:\tmp,
a questo punto riesco a definire i miei campi usandi il Fields editor.
Non avevo mai usato i componenti TSession e TDatabase, (che penso possano
servire quando si vogliano avere Dataset connessi a sessioni diverse), e
naturalmente sono una complicazione inutile in pi�, visto che finora, almeno
in Delphi 7, mi bastava definire il mio TQuery.
E non � detto che non ci sia una soluzione pi� semplice.. Aspetto che
Brunello magari mi dia qualche commento in pi� sul suo originario
suggerimento. Magari ho complicato inutilmente le cose ...

Brunello

unread,
Jun 4, 2010, 3:53:28 PM6/4/10
to
On 4 Giu, 19:45, "Stark" <franco.jo...@tin.it> wrote:
> "Luigi Siciliano" <l...@luigisiciliano.it> ha scritto nel messaggionews:4c093154$0$18652$4faf...@reader3.news.tin.it...

primo mi scuso per il ritardo
secondo nei miei progetti utilizzo sempre un datamodule nel quale
colloco tutti i componenti per la connessione al database ed i vari
TQuery che utilizzo dai vari form del progetto, e piu' di una volta lo
stesso datamodule l'ho riutilizzato in piu' progetti che accedono allo
stesso database. Quello che vedi una complessita' in piu' in realta'
nel tempo ti permette una gestione molto semplice di progetti da
rielaborare o adattare a nuove esigenze.
Io mi definisco un programmatore a pane e mortadella essendo arrivato
a Delphi dalla programmazione in asm poi nel tempo a quick basic e
clipper ed il mio approccio alla programmazione ad oggetti e' sempre
stato molto marginale, pur comprendendone le effettive potenzialita'
non riesco ancora a staccarmi da vecchie abitudini, per quanto
riguarda i datamodule se ci sono arrivato io ci arrivano tutti. vie
piu' semplici di questa che ti ho tracciato non ne vedo, ciao e buon
lavoro


Stark

unread,
Jun 4, 2010, 5:36:34 PM6/4/10
to

"Brunello" <brune...@yahoo.it> ha scritto nel messaggio
news:904cb80f-9a36-41e2...@k31g2000vbu.googlegroups.com...
Io sono siuramente un programmatore più scarso di te, quindi ti chiedo
ancora se ho capito bene quello che fai. Mettiamo pure di usare un
DataModule. Per definire come suggerisci la property PrivateDir, quali altri
componenti presupponi di utilizzare e come li leghi l'uno all'altro
(immagino bene se imaggino che usi TSession, TDatabase e TQuery ? Mi puoi
fare un esempio delle principali properties che usi per legarli insieme ?)
Grazie e scusa l'insistenza. Se non hai tempo, non importa. Cercherò di
arrivarci in qualche altro modo.
usi per

Brunello

unread,
Jun 5, 2010, 2:35:43 AM6/5/10
to
On 4 Giu, 16:59, "Stark" <franco.jo...@tin.it> wrote:
> "Brunello" <brunell...@yahoo.it> ha scritto nel messaggionews:74bffdbf-cf54-45ea...@j4g2000yqh.googlegroups.com...

Nella unit del DataModule devi aggiungere alla uses il file DBTables,

Giorgio Padoan

unread,
Jun 5, 2010, 9:44:28 AM6/5/10
to
>> Ad ogni modo, se proprio non ne esci, ritorna a D6 : al limite
>> installalo in una macchina virtuale fatta apposta per la manutenzione
>> del tuo programma vecchio.
>>
>> ciao
>>
>> --
>> Morde
>>
>>
> Non ho idea dello sforzo implicito in un cambio verso Firebird. Uso si
> molti oggetti DBAware, ma i soliti: cioè un pò tutti i tipi di grids,
> DBEdits.. Non ho idea di cosaa intendi per wrapper grafici di classi o
> clasi che incapsulano i dati ..
>

Io direi che per un soft. monoutende potrebbe molto + semplicemente
migrare al motore (motorino a 2 tempi...) Jet presente gia' in windows
xp, con semplici tabelle .MDB, mediadiante i componenti ADO di Delphi.
Diventa tutto molto semplice, non hai nulla da installare salvo il tuo
eseguibile ed il file database .mdb. Le tabelle le crei con Acess XP del
2002, estremamente semplice da usare.
I componenti sono i soliti: query e table..., solo che devi inserire un
TConnection dove in maniera guidata imposti "quattro parametri" tra i
quali il percorso del file database .mdb.
Niente BDE e file di configurazione, nel TConnection c'e' tutto quel che
serve e gran parte dei parametri devi lasciarli come proposti per
default, salvo il motore ed il percorso ovviamente.
In pratica i Tquery e compagnia si legano al Tconnection dal quale
ottengono le informazioni sul database, le tabelle contenute ed i vari
campi.

ciao Giorgio

0 new messages