Visualizzazione dei risultati da 1 a 8 su 8

Discussione: [Access] e 2 Databse

  1. #1
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    16

    [Access] e 2 Databse

    Ciao a tutti, � la prim che scrivo in questo Forum e vi premetto che non sono di certo un provetto programmatore. Vi descrivo il mio problema, magari sar� un po' lungo ma voglio cercare di essere il pi� chiaro possibile. Ah....sto sviluppando con Visual Studio 2017.....

    Ho un database Access (che chiamer� DB Sorgente) che non � stato progettato da me e da me non viene gestito infatti ogni volta che lancio un programma questo Database scaricare da internet gli aggiornamenti dei dati. All'interno di esso vi sono diverse tabelle tutte con chiave primaria ma non vi � alcuna relazione/vincolo tra le tabelle....in sostanza � come se fossero tanti fogli Excel fini a se stessi. Non posso apportare modifiche alla struttura del DB Sorgente poich� altrimenti ogni giorno verrebbero sovrascritte dall'aggiornamento dei dati che ricevo da Internet.

    Ho pensato quindi di crearmi un mio DB Access popolato con alcuni dei dati presenti nel DB Sorgente manipolati a mio piacimento e che ovviamente verr� aggiornamento soltanto quando io inserir�, eliminer� o modificher� dei record.

    Ho 2 principali problemi:

    1) Nella tabella del DB Sorgente alla quale io voglio attingere ci sono ovviamente diversi campi, uno dei quali � chiamato "Classe" ed i cui valori possono essere "005","001","007","003","012" tutti dichiarati come "Testo Breve". Sarebbe stato pi� furbo che chi ha progettato questo DB avesse creato una ulteriore tabella che mappasse il campo "Classe" perch� ovviamente ogni valore "005",001",007" ha una sua descrizione. Questo non � stato fatto. Io ovviamente so a cosa corrispondo i valori "005","001","007" ecc....pertanto nel mio DB mi sono creato una tabella chiamata "Classe" che ha come chiave primaria questi valori e un campo contenente la loro relativa descrizione.
    Io vorrei che nel momento in cui vado a caricare i dati del DB Sorgente in una DataGridView i valori del campo "Classe" venissero automaticamente convertiti con le descrizioni attinte dal DB di mia produzione. Come posso fare questo?

    2) Analogalmente nel DB Sorgente vi � un Campo "Scadenza" la cui data � espressa anch'essa con formato testo breve, per esempio 20161231. Ovviamente anche in questo caso vorrei che caricando i dati in una DatraGridView il campo "Scadenza" venisse visualizzato cos' "31/12/2016" e non "20161231" come salvato nel DB Sorgente.

    Se io carico i dati nella DataGridView utilizzando il metodo Fill, come i dati vengono letti essi vengono immediatamente visualizzati nella DataGridView.
    Se io invece carico i dati in un DataTable utilizzando il metodo GetData ho poi la possibilit� di scorrere le righe del DataTable e modificare i valori a mio piacimento ma ovviamente non credo che questo sia un bell'approccio anche perch� nel momento in cui le righe del DataTable sono poche l'operazione � quasi immediata ma visto che le righe da leggere nel DB Sorgente sono circa 50.000 capite anche voi che l'operazione viene rallentata.

    Esiste quindi un modo per leggere i dati dal DB Sorgente e automaticamente "accoppiarli" con i valori corretti attinti dal mio DB? Ho provato a documentarmi su INNER JOIN ma qui stiamo parlando di attingere a 2 databse diversi e non a 2 tabelle dello stesso database per cui non mi � semplice capire come fare......

    Grazie a tutti
    Giacomo

  2. #2
    Utente di HTML.it L'avatar di Misterxxx
    Registrato dal
    Oct 2003
    Messaggi
    3,700
    Collega le tabelle sorgenti al tuo db, no?
    Ma forse non ho capito
    Io ne ho viste cose che voi umani non potreste immaginare. Navi da combattimento in fiamme al largo dei bastioni di Orione e ho visto i raggi B, balenare nel buio vicino le porte di Tannhäuser. E tutti quei momenti ... andranno ... perduti nel tempo, come lacrime nella pioggia. È tempo di morire. (Roy Batty).

  3. #3
    lasciati ispirare da questo esempio
    SELECT TF.DESCRIZIONE FROM [C:\DBS\DB2.MDB].FATTURE TF INNER JOIN CLIENTI TC ON TF.CLIENTE=TC.CODICE

    comunque, hai scritto un papiro ma non è che si capisca molto forse conveniva essere più brevi e andare al sodo


  4. #4
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    16
    Innanzitutto grazie per risposte e scusatemi se non vi ho risposto prima.....sono tornato solo ora in ufficio da sabato mattina....
    Scusatemi anche se sono stato troppo lungo....credevo di aver fatto un post chiaro!!! ehehehe

    Appena ho un attimo, nel pomeriggio, provo la soluzione proposta da Optime che a spanne dovrebbe proprio fare il caso mio e poi vi aggiorno!!!

    Grazie

  5. #5
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    16
    Niente, non ci riesco anche perchè mi sono reso conto che forse quello che voglio fare io non è fattibile.
    Provo a rispiegarmi in modo più conciso.

    DATABASE 1 non lo posso in alcun modo toccare, lo devo trattare come se fosse in sola lettura, ha al suo interno diverse tabelle che non hanno relazioni tra di loro. A me interessa solo la tabella "Dictionary" tra i cui campi vi è il campo "Classe" ed è espresso in Stringa "001","002","003". Io so a priori che per esempio 001=Stock, 002=Bond, 003=Future ma questo non è espresso in nessun'altra delle tabelle.

    DATABASE 2 è creato da me per inserirci alcuni dei record presenti nella tabella "Dictionary" del Database1. All'interno ho diverse tabelle, una delle quali si chiama "Segmenti" con i campi chiave IDIncrement (come chiave primaria), Mercato, Classe, DescrizioneClasse. Il campo "Classe" di questa tabella riporta i valori del pari campo del Database1 mentre il campo Descrizione ne riporta ovviamente la descrizione Stock, Bond, Future.

    Io voglio caricare in una griglia i record presenti in alcune colonne del DATABASE1 tra cui il campo Classe che però non voglio che venga visualizzato come 001,002,003 ma voglio che venga visualizzato come Stock, Bond, Future.

    Per cui in sostanza gli devo dire: quando carichi i dati del Database1 ed in particolare quando carichi il campo Classe collegati al Database2 cerca il record che corrisponde alla classe e visualizzami la descrizione.

    Ho pensato di uscirne con un escamotage: nel mio DB2 all'interno del quale posso farci quello che voglio, mi creo una Tabella con analoga struttura a quella presente nel DB1 ma aggiungendoci le relazioni tra tabelle. Popolo questa tabella copiandoci dentro pari pari i dati della tabella del DB1. In questo modo mi ritrovo ad avere una copia pari pari della tabella da cui vogliono attingere i dati ma avendo le relazioni e le chiavi esterni mi dovrebbe esser più semplice eseguire query e manipolarne i dati.

    Cosa ne dite?

  6. #6
    che prove hai fatto? che query hai scritto?

  7. #7
    Utente di HTML.it
    Registrato dal
    Mar 2012
    Messaggi
    16
    Ce l'ho fatta!!! Passatemi il termine ma mi do del pirla da solo!! Ora vi spiego....

    Nel DB dal quale attingo i dati ho comunque una tabella che "mappa" il campo Classe pur non avendo alcuna relazione con la tabella dalla quale io attingo.
    Sono quindi andato nella progettazione Dataset, ho aggiunto anche questa tabella al Dataset poi ho creato una nuova Query sulla tabella. Nella parte superiore del Generatory di Query ho aggiunto anche la seconda tabella e quindi in automatico mi ha creato un INNER JOIN. Ho quindi inserito 3 condizioni nel JOIN tra i campi in comune delle 2 tabelle e nel SELECT ho inserito la colonna della tabella contenente la descrizione della Classe.
    In questo modo ottengo praticamente il risultato che volevo. Ho detto praticamente perchè la descrizione del Campo Classe che ottengo in questo modo non è quella che avrei inserito io manualmente ma almeno in questo modo è comprensibile sarà poi mia cura salvarmela diversamente quando andrò a popolare il Database che gestirò io!!!

  8. #8

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.