Newsgroup: it.comp.lang.delphi
Titolo: TQuery

..ma non dici su quale db, sob! :((
Allora....
Se usi paradox, devi farlo a mano.
Cioè, usare l'evento OnUpdateRecord della query e fare un 
bel giochino usando TUpdateSql.
I db client/server hanno, tra le altre cose, la possibilità
di indicare il tipo di integrita referenziale.
Si puo:
1)impostare sui records figli il valore della chiave a null
2) impostare sui records figli il valore della chiave al nuovo valore
3) nessuna modifica possibile.
Queste sono solo descrizioni indicative: ognui db ha i suoi termini
per indicare queste 3 operazioni, ma il succo è tutto qui.
Saluti
AS
-- 
Posted from 
ammi.mclink.it
 [195.110.128.1] 
via Mailgate.ORG Server - 
http://www.Mailgate.ORG

 bel giochino usando TUpdateSql.
Quale bel giochino?
--
Giuseppe Fraddosio
fradd...@libero.it
fradd...@supereva.it

 Quale bel giochino?
Evento OnUpdateRecord della query master.
In pratica fai una specie di override dell'aggiornamento.
Devi avere 2 oggetti TUpdateSql, uno per la tabella master ed
uno per la tabella detail.
Sull'update del master metti un controllo: se č cambiata la chiave
usata pe collegare il detail, lanci un aggiornamentp anche sul detail
del tipo:
update Qualcosa
set campo1 = valorenuovo
where qualcosa.campo1 = valorevecchio
In un db client/server come IB questa cosa č automatica.


 In un db client/server come IB questa cosa è automatica.
Appena compro D6 lo faro'. Ora purtroppo con D3 Standard non posso
andare da nessuna parte.
Grazie comunque.


Grazie comunque.
E di che??? :))


 anche con D3.
Come esattamente? Cosi' cambio da subito con IB.


1) Procurati un driver ODBc per Interbase. Lo trovi ad esempio
su 
http://www.ibphoenix.com
2) Installa ib6
3) Installa il driver odbc al punto 1
4) Apri la console di Ib6
5) creati un db scemo giusto per prova: bastano anche 2 tabelle.
Per fare questo devi usare il comando Create Database. Poi crei
le tabelle dalla finestre di iSql; nell'help trovi le sintassi
di create Table
6) Crea una fonte dati odbc che punti ak db interbase che hai creato
7) apri delphi
8) Creati un datamodule ed un form
9) nel datamodule metti un oggetto di classe TDatabase.
Cliccaci sopra 2 volte, scegli il driver ODBC di interbase e clicca
su default: si riempie la lista dei parametri da specificare.
nella riga odbc dsn o simile metti il nome della fonte dati odbc
che hai creato
10) Aggiungi un oggetto tQuery ed un oggetto tdatasource
11) Sull'oggetto query:
imposta la prop databasename in modo che punti all'oggetto
TDatabase che hai creato;
specifica una query nella proprieta sql:
select * from tabella
12) Associa la query al TDataset
13) vai sul form e metti una dbgrid, poi dai al form la visibilita
sul datamoudle e asssegna la prop datasource della griglia
14) compila ed esegui


 di create Table
Ho provato ad usare IBConsole, ma mi chiede di aprire il server
(register) e loggarmi: chi e' l'amministratore? Durante
l'installazione non mi ha chiesto nulla in proposito. Ovvero che
username e password devo usare?


 username e password devo usare?
Problema Username e Password risolta: SYSDBA e masterkey. Dopo invani
tentavi di log con la procedura descritta (mi ritornava l'errore "your
application is not enabled for use with this driver" ho scoperto che
il problema risiede in Delphi 3 Standard. Mi sono fatto prestare da un
amico D5 Enterprise (lui lo usa per lavoro) e tutto funziona. Il
problema e' che in D5 ci sono gli IBExpress e i driver ODBC non
servono .... come sono infelice!





No! Il driver ODBC non sostituisce il client.
Il driver odbc ti serve se non usi i componenti specifici di
interbase per accesso ai dati.
Cioè, se usi TQuery e TDatabase, i componenti standard di accesso
ai dati, per accedere a IB ti serve un driver ODBC.
Se invece usi TIbQuery, il driver odebc non ti serve.
Quale è la soluzione migliore?
Questa domanda non ha una risposta secca.
Se usi i componenti standard hai la possibilità un domani
di cambiare il db in modo quasi trasparente, salvo le sintassi di
alcuni comandi delle query.
Ad esempio, se passi a SqlAnywhere di Sybase, esistono delle funzioni
simpatiche che sarebbe un peccato non usare.
Altro discorso è Oracle, che non è ansi sql 92.
Se usi i componenti specifici per ib hai un accesso ai dati 
+ rapido, in quanto non passi ne per ODBC ne per BDE.
Quindi, in base alle proprie necessità, uno sceglie quale
soluzione adottare.
Il client è tutt'altra faccenda: ti tocca indipendentemente
da cosa usi per accedere ai dati.
mettiamola cosi': per andare da punto A al punto B (dal client
al server...) devi passare per un ponte: non esiste alternativa.
Puoi solo decidere COME passare il ponte.
Spero di esserti stato d'aiuto.


 Puoi solo decidere COME passare il ponte.
Infatti ho scelto di usare gli oggetti IB per problema di velocita'.
