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 ?
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:
ciao
--
Morde
> 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
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
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
nel sorgente del modulo dati si deve inserire nella procedura
DataModuleCreate
Session.PrivateDir := 'C:\TEMP';
ciao Brunello
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 ...
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.
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
Nella unit del DataModule devi aggiungere alla uses il file DBTables,
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