SI MA COME HA DETTO ALKA NON MI FUNZIONA.....
CIAOS GRAZIES
SI MA COME HA DETTO ALKA NON MI FUNZIONA.....
CIAOS GRAZIES
Questo mai!!!Originariamente inviato da niquesca
ok ho fatto come mi ha suggerito Daniele....non sapevo tra l'altro
che tramite il wirzard potevo verificare la sintassi sql che è molto comoda.....
e funzia...! vorrei chiedervi un altro suggerimento se non mi mandate a quel paese......
Credo che per questo devi usare la soluzione che ti accennavo io e poi spiegata dettagliatamente (come al solito) da Alka.con access se relaziono due tabelle, con una relazione uno a molti..
visualizzo tutti i record della tabella secondaria....
invece in delphi, nella grid,....visualizzo i record della tabella secondaria man mano che seleziono i record della tabella principale....
c'è un modo per visualizzare come in access? senza cambiare le relazioni?
Che mi risulta le relazioni master/detail uno a molti sono, appunto, un rigo di testata e molti di dettaglio, se access te le fa vedere diversamente non credo che si tratti di relazioni uno/molti.
PS: la storia delle tabelle con lo stesso nome per aprirle tutte insieme non l'ho capita molto, ma i file su disco almeno hanno nomi diversi o sono in cartelle diverse? o si tratta di più tabelle che puntano allo stesso archivio? e com'è che ne apri una si aprono tutte perchè hanno lo stesso nome? se ti va chiariscimi questo dubbio altrimenti non fa niente.
Un bacio anche a te...
a Marco basta un ciao (vero Marco?)
![]()
Probabilmente hai sbagliato qualcosa, ora provo a fare un esempio anche io cercando di chiarirti meglio le idee.Originariamente inviato da niquesca
SI MA COME HA DETTO ALKA NON MI FUNZIONA.....
CIAOS GRAZIES
A dopo.
ti ringrazio ma sai il problema qual è? è che le tabelle master e details hanno lo stesso nome....
ciao grazie
Purtroppo quello che ha detto alka è praticamente quello che serve, cmq ti posto il mio esempio:
select d1.*, d2.*
FROM ":nome_alias:MovMag03.DB" D1
LEFT JOIN ":nome_alias:GIACEN03.DB" D2 ON D1.MINSAN10=D2.MINSAN10
WHERE (D1.CLFR = "C") AND (D1.SEGNO = "U")
Ricordati di:
sostituire nome_alias con l'alias che usi o con il percorso assoluto
impostare i nomi degli archivi correttamente
controllare i campi di relazione (ON D1.MINSAN10=D2.MINSAN10)
e eventualmante le condizioni Where
Spiega meglio la questione delle tabelle.
Infatti..risco a visualizzare i record cosi come faccio nelle tabelle access facendo come ha suggerito alka....per farlo funzionare ho cambiato nome ai database, ma ora provo con il metodo alias...magari cosi riesco a bypassare il problema dei nomi uguali...
grazie ancora ciao
La vostra velocità di scambio di informazioni è troppo superiore alle mie possibilità.
Niquesca, dagli esempi che mi hai mandato nei giorni scorsi, mi sembra che tu stia accedendo sempre alle tabelle tramite i componenti del BDE, ma senza definire un alias dal Pannello di Controllo. Ti suggerisco di farlo subito poichè potresti avere strani effetti collaterali durante il funzionamento del tuo programma, inclusa una perdita di dati.
La sintassi che ti ho proposto io per lo statement SQL è valida se applicata ad entità (tabelle e query) che appartengono allo stesso database. Nel tuo caso, se hai a che fare con database che contengono tabelle aventi lo stesso nome da correlare, non puoi utilizzare SQL, ma devi per forza legarle in altro modo.
Non bisogna confondere la relazione master/detail con le relazioni di Access: la prima è solo un espediente per poter collegare due tabelle allo scopo di visualizzare e filtrare automaticamente i dati all'interno di Delphi, per riportare i dati all'interno di una griglia, stamparli o scorrerli in un modo ben preciso; le relazioni, invece, stabiliscono delle vere e proprie regole che intervengono anche a seguito di modifiche ed eliminazioni di record, e sono cose ben diverse.
Nel tuo caso, se vuoi correlare tabelle provenienti da database differenti, ti suggerirei di creare due alias distinti ed utilizzare il meccanismo master/detail, poichè non c'è modo di gestirle contemporaneamente tramite SQL.
Sinceramente, faccio ancora un po' di fatica a capire bene con quale struttura di database hai a che fare; in modo particolare, non capisco come tu riesca a stabilire delle relazioni tra tabelle che non appartengono allo stesso database. Usi Access? Allora probabilmente hai aperto un database e hai collegato ad esso le tabelle del DB secondario tramite il comando "Collega Tabelle".
In generale, evita comunque di usare l'SQL proposto da Access all'interno di Delphi; le specifiche del linguaggio SQL di Access sono un po' "personalizzate" e si allontanano dallo standard, pertanto gli statement che possono venire accettati in Access, spesso incontrano dei problemi quando vengono caricati all'interno di Delphi.
Ciao!
P.S. x Daniele: sì, direi che una stretta di mano è sufficiente!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ho fatto una prova di questo tipo....e cioè ho messo nella sintassi
sql '\cartelle\pazi' per differenziare i due database, ossia quello details si trova nellA dir corrente invece il database master nella cartella cartelle....il tutto funge...e pensavo di aver trovato la soluzione, però appena rinomino il database da "pazi" in "pazienti" cosi come dovrebbe essere pur mantenendo la sintassi cartelle\pazienti...mi va in errore....
possibile? eppure chiamo i database DA due directory diverse deve esserci il modo...!
qAnagr.DatabaseName:='C:\Programmi\Caes\ESuite\dat i\';
prova:='SELECT pazienti.* FROM cartelle\pazi INNER JOIN pazienti ON pazienti."Codice Cliente" = cartelle\pazi."Codice Cliente" WHERE cartelle\pazi."Codice Cliente" = pazienti."Codice Cliente"';
ps.si uso BDE...
grazie alka...sto diventando scema
Ti sconsiglio caldamente di usare come DatabaseName il percorsi fisico. Crea 2 alias usando il BDE Administrator dal Pannello di Controllo, inserisci due componenti TDatabase all'interno della tua applicazione e associa ad essi un nome di database locale significativo.
Poi, quando aggiungi componenti TTable e TQuery alla tua applicazione, associa tali componenti al database appropriato; vedrai che il 99% dei problemi si risolverà.
Ciao!![]()
MARCO BREVEGLIERI
Software and Web Developer, Teacher and Consultant
Home | Blog | Delphi Podcast | Twitch | Altro...
Ciao
se via sql non va usero masterdetail, usero il bde ecc ecc...però il problema resta lo stesso...
purtroppo lo risolvevo solo come avevi suggerito tu tramite la sintassi sql...
mi spiego....se io ho una tabella master con dei record che vanno da 1 a 20, la tabella details ha invece 50 record...ed io vorrei visualizzare i venti record che hanno un id uguale alla tabella master.
tenendo conto che le due tabelle sono paradox, il nome è uguale, quindi stanno in due directory diverse,uso BDE ...........
tu come faresti?
ps il fatto è che usando master details.. visualizzo i record della tabella sottostante...che mi interessano solo se seleziono man mano i record della tabella principale...
non so no so...hai altri suggerimneti?
grazie