Trasferire dato testo da casella combinata

di il
12 risposte

Trasferire dato testo da casella combinata

Salve a tutti, sono nuova nel forum.
Sto realizzando il mio primo database, che riguarda un'assistenza informatica alla clientela.
Il database ha tre tabelle: cliente, intervento e tipo intervento.
In particolare la terza tabella contiene i dati per poter creare una casella combinata per immettere il valore in un campo della tabella "intervento". (i campi della tabella "tipo intervento" sono ID e Tipo)
Ho creato le relative maschere per l'inserimento dati, e adesso il mio problema è il seguente:
nella maschera " intervento", oltre alle caselle di testo per immettere i dati, ho inserito una casella combinata da cui prendo i dati dalla tabella "tipo intervento" e vorrei che poi il dato scelto( è di tipo testo), venga salvato con lo stesso tipo.
Esempio: se scelgo "rimozione virus", vorrei che nella tabella poi venga scritto proprio "rimozione virus".
Tuttavia ciò non accade, perchè mi fa visualizzare il numero associato al tipo.
Esempio: nella tabella "tipo intervento" ho i seguenti dati:

ID Tipo
1 Rimozione virus
2 Aggiornamento Software

Quando eseguo la maschera e immetto i dati e nella casella combinata scelgo "Rimozione virus", quest'ultima nella tabella mi fa visualizzare "1" anzichè "rimozione virus".
Come faccio a risolvere il problema?
Ve ne sarei immensamente grata!

12 Risposte

  • Re: Trasferire dato testo da casella combinata

    AngelPia ha scritto:


    Ho creato le relative maschere per l'inserimento dati, e adesso il mio problema è il seguente:
    nella maschera " intervento", oltre alle caselle di testo per immettere i dati, ho inserito una casella combinata da cui prendo i dati dalla tabella "tipo intervento" e vorrei che poi il dato scelto( è di tipo testo), venga salvato con lo stesso tipo.
    Esempio: se scelgo "rimozione virus", vorrei che nella tabella poi venga scritto proprio "rimozione virus".
    Errore! questo viola la normalizzazione. Nella tabella [intervento] devi memorizzare l'identificativo del [tipo intervento] e solo in fase di "visualizzazione", con le relazioni tra le tabelle e i join ricavi la descrizione.

    AngelPia ha scritto:


    Tuttavia ciò non accade, perchè mi fa visualizzare il numero associato al tipo.
    Esempio: nella tabella "tipo intervento" ho i seguenti dati:

    ID Tipo
    1 Rimozione virus
    2 Aggiornamento Software

    Quando eseguo la maschera e immetto i dati e nella casella combinata scelgo "Rimozione virus", quest'ultima nella tabella mi fa visualizzare "1" anzichè "rimozione virus".
    Fortunamente sembra che la procedura guidata di creazione della maschera abbia supplito a questo al tuo errore concettuale di partenza, popolando le tabelle in modo corretto. Ora si tratta di ottenere la "visualizzazione" adatta per l'utente che opera con il db.

    AngelPia ha scritto:


    Come faccio a risolvere il problema?
    Sicura che lo fosse? Qui trovi la spiegazione delle forme normali Descrizione dei principi relativi alla normalizzazione dei database e qui molti altri suggerimenti per partire con il piede giusto
    Nozioni fondamentali della progettazione di database
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    AngelPia ha scritto:


    Ho creato le relative maschere per l'inserimento dati, e adesso il mio problema è il seguente:
    nella maschera " intervento", oltre alle caselle di testo per immettere i dati, ho inserito una casella combinata da cui prendo i dati dalla tabella "tipo intervento" e vorrei che poi il dato scelto( è di tipo testo), venga salvato con lo stesso tipo.
    Esempio: se scelgo "rimozione virus", vorrei che nella tabella poi venga scritto proprio "rimozione virus".
    Errore! questo viola la normalizzazione. Nella tabella [intervento] devi memorizzare l'identificativo del [tipo intervento] e solo in fase di "visualizzazione", con le relazioni tra le tabelle e i join ricavi la descrizione.

    AngelPia ha scritto:


    Tuttavia ciò non accade, perchè mi fa visualizzare il numero associato al tipo.
    Esempio: nella tabella "tipo intervento" ho i seguenti dati:

    ID Tipo
    1 Rimozione virus
    2 Aggiornamento Software

    Quando eseguo la maschera e immetto i dati e nella casella combinata scelgo "Rimozione virus", quest'ultima nella tabella mi fa visualizzare "1" anzichè "rimozione virus".
    Fortunamente sembra che la procedura guidata di creazione della maschera abbia supplito a questo al tuo errore concettuale di partenza, popolando le tabelle in modo corretto. Ora si tratta di ottenere la "visualizzazione" adatta per l'utente che opera con il db.

    AngelPia ha scritto:


    Come faccio a risolvere il problema?
    Sicura che lo fosse? Qui trovi la spiegazione delle forme normali Descrizione dei principi relativi alla normalizzazione dei database e qui molti altri suggerimenti per partire con il piede giusto
    Nozioni fondamentali della progettazione di database

    Innanzitutto grazie per la risposta!
    Sì, mi esce scritto 1 e non il testo, proprio nella visualizzazione della tabella, che ho fatto tramite un report.
    In realtà eliminando la chiave primaria(ID) nella tabella [Tipo Intervento], sembra che ho risolto il problema.
    Mi spiego meglio:
    adesso la tabella [Tipo Intervento]ha un unico campo "Tipo", e che funge anche da chiave primaria.
    Inserendo poi la casella combinata, ho riscontrato che scegliendo una voce dell'elenco questa veniva scritta pari pari nel campo della tabella.
    Potrebbe andare così? O avrò problemi in futuro?
  • Re: Trasferire dato testo da casella combinata

    AngelPia ha scritto:


    Innanzitutto grazie per la risposta!
    Sì, mi esce scritto 1 e non il testo, proprio nella visualizzazione della tabella, che ho fatto tramite un report.
    In realtà eliminando la chiave primaria(ID) nella tabella [Tipo Intervento], sembra che ho risolto il problema.
    Mi spiego meglio:
    adesso la tabella [Tipo Intervento]ha un unico campo "Tipo", e che funge anche da chiave primaria.
    Inserendo poi la casella combinata, ho riscontrato che scegliendo una voce dell'elenco questa veniva scritta pari pari nel campo della tabella.
    Potrebbe andare così? O avrò problemi in futuro?
    Potrebbe andare. Problemi in futuro? mah... detto così no: stringendo stringendo stai comunque usando una chiave primaria ed una relazione uno a molti tra [tipo intervento] ed [intervento]. Fai attenzione a non trovarti chiavi primarie di tipo testo "lunghe" (i tipi intervento possono essere i più disparati ed ogni volta che se ne presenta uno nuovo dovrai trovare una descrizione univoca ed adatta). A lungo andare le prestazioni potrebbero risentirne anche se nei db piccoli la differenza non si nota molto. E' certo però che la "procedura consigliata", che dà i migliori risultati sotto tutti i punti di vista, è quella dell'ID come chiampo chiave (numerico) e di lasciare ad altri campi il contenuto della descrizione ecc. Così l'ho imparata e così l'ho sempre vista applicata. La spiegazione però "tecnica" (ragionata e consapevole) di quello che ti ho appena detto (calo delle prestazioni ecc) può fornirtela chi conosce veramente bene come "ragionano" Access (in particolare) e i db (in generale) nella gestione delle chiavi primarie e delle relazioni tra tabelle.
    Nel frattempo ho immaginato una spiegazione "terra terra" di questo tipo: secondo te, se un db deve andare alla ricerca di una informazione fondamentale come un campo chiave, che deve corrispondere perfettamente, è più lesto se deve confrontare due numeri, per vedere se corrispondono, o due stringhe di testo di n caratteri (dove possono anche esserci lettere maiuscole-minuscole)? E' più facile mettere in ordine (crescente o decrescente che sia) una serie di numeri o dei campi di tipo testo? Tutto gioca a favore dei campi chiave numerici, in queste situazioni.
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    AngelPia ha scritto:


    Innanzitutto grazie per la risposta!
    Sì, mi esce scritto 1 e non il testo, proprio nella visualizzazione della tabella, che ho fatto tramite un report.
    In realtà eliminando la chiave primaria(ID) nella tabella [Tipo Intervento], sembra che ho risolto il problema.
    Mi spiego meglio:
    adesso la tabella [Tipo Intervento]ha un unico campo "Tipo", e che funge anche da chiave primaria.
    Inserendo poi la casella combinata, ho riscontrato che scegliendo una voce dell'elenco questa veniva scritta pari pari nel campo della tabella.
    Potrebbe andare così? O avrò problemi in futuro?
    Potrebbe andare. Problemi in futuro? mah... detto così no: stringendo stringendo stai comunque usando una chiave primaria ed una relazione uno a molti tra [tipo intervento] ed [intervento]. Fai attenzione a non trovarti chiavi primarie di tipo testo "lunghe" (i tipi intervento possono essere i più disparati ed ogni volta che se ne presenta uno nuovo dovrai trovare una descrizione univoca ed adatta). A lungo andare le prestazioni potrebbero risentirne anche se nei db piccoli la differenza non si nota molto. E' certo però che la "procedura consigliata", che dà i migliori risultati sotto tutti i punti di vista, è quella dell'ID come chiampo chiave (numerico) e di lasciare ad altri campi il contenuto della descrizione ecc. Così l'ho imparata e così l'ho sempre vista applicata. La spiegazione però "tecnica" (ragionata e consapevole) di quello che ti ho appena detto (calo delle prestazioni ecc) può fornirtela chi conosce veramente bene come "ragionanano" Access (in particolare) e i db (in generale) nella gestione delle chiavi primarie e delle relazioni tra tabelle.
    Nel frattempo ho immaginato una spiegazione "terra terra" di questo tipo: secondo te, se un db deve andare alla ricerca di una informazione fondamentale come un campo chiave, che deve corrispondere perfettamente, è più lesto se deve confrontare due numeri, per vedere se corrispondono, o due stringhe di testo di n caratteri (dove possono anche esserci lettere maiuscole-minuscole)? E' più facile mettere in ordine (crescente o decrescente che sia) una serie di numeri o dei campi di tipo testo? Tutto gioca a favore dei campi chiave numerici, in queste situazioni.
    Hai perfettamente ragione, anche io la penso come te, ma in mancanza di altro questa è l'unica soluzione che ho trovato. Purtroppo non so perchè mettendo l'ID come chiave primaria, mi faccia vedere appunto quella quando seleziono con la casella combinata.
    Dalle prove che ho potuto fare sembra che il problema nasca proprio da quello: la chiave primaria.
    Sembra che, con la creazione guidata, il valore che viene associato(malgrado io scelga come riferimento il campo"tipo") è solo la chiave primaria.
    Adesso che però mi ci fai pensare, la tabella Tipo Intervento non è collegata a Intervento con una chiave esterna.
    Sarà quello il motivo?
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    AngelPia ha scritto:


    Innanzitutto grazie per la risposta!
    Sì, mi esce scritto 1 e non il testo, proprio nella visualizzazione della tabella, che ho fatto tramite un report.
    In realtà eliminando la chiave primaria(ID) nella tabella [Tipo Intervento], sembra che ho risolto il problema.
    Mi spiego meglio:
    adesso la tabella [Tipo Intervento]ha un unico campo "Tipo", e che funge anche da chiave primaria.
    Inserendo poi la casella combinata, ho riscontrato che scegliendo una voce dell'elenco questa veniva scritta pari pari nel campo della tabella.
    Potrebbe andare così? O avrò problemi in futuro?
    La spiegazione però "tecnica" (ragionata e consapevole) di quello che ti ho appena detto (calo delle prestazioni ecc) può fornirtela chi conosce veramente bene come "ragionano" Access (in particolare) e i db (in generale) nella gestione delle chiavi primarie e delle relazioni tra tabelle.
    Qui comincia già ad esserci un fondamento tecnico-scientifico di quanto ho studiato: Differenze tra chiavi-tabella numeriche e alfanumeriche?, specie nella seconda pagina.
  • Re: Trasferire dato testo da casella combinata

    AngelPia ha scritto:


    Hai perfettamente ragione, anche io la penso come te, ma in mancanza di altro questa è l'unica soluzione che ho trovato.
    Ti sei fermata troppo presto.

    AngelPia ha scritto:


    Purtroppo non so perchè mettendo l'ID come chiave primaria, mi faccia vedere appunto quella quando seleziono con la casella combinata.
    Dalle prove che ho potuto fare sembra che il problema nasca proprio da quello: la chiave primaria.
    Sembra che, con la creazione guidata, il valore che viene associato(malgrado io scelga come riferimento il campo"tipo") è solo la chiave primaria.
    Adesso che però mi ci fai pensare, la tabella Tipo Intervento non è collegata a Intervento con una chiave esterna.
    Sarà quello il motivo?
    Forse, prova (usando un ID ). Non sono bravo con le caselle combinate nelle maschere ecc ecc. Di sicuro la casella combinata può mostrare la parte descrittiva ma memorizza nella tabella [interventi] il codice (come faceva la procedura guidata). Se poi vuoi anche visualizzare nel dettaglio degli interventi la descrizione del tipo intervento devi istruire la maschera a cercare l'informazione in base all'ID del tipo intervento. Impostando bene la relazione tra le tabelle tutto diventerà molto più facile. Anche magari passando attraverso una query che "decodifica" l'ID tipo intervento pescando la relativa descrizione (anche qui, dopo aver impostato la relazione tra tabelle, la procedura guidata di creazione della query ti permetterà di scegliere le due tabelle e di prendere da ognuna quello che ti interessa)
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    AngelPia ha scritto:


    Hai perfettamente ragione, anche io la penso come te, ma in mancanza di altro questa è l'unica soluzione che ho trovato.
    Ti sei fermata troppo presto.

    AngelPia ha scritto:


    Purtroppo non so perchè mettendo l'ID come chiave primaria, mi faccia vedere appunto quella quando seleziono con la casella combinata.
    Dalle prove che ho potuto fare sembra che il problema nasca proprio da quello: la chiave primaria.
    Sembra che, con la creazione guidata, il valore che viene associato(malgrado io scelga come riferimento il campo"tipo") è solo la chiave primaria.
    Adesso che però mi ci fai pensare, la tabella Tipo Intervento non è collegata a Intervento con una chiave esterna.
    Sarà quello il motivo?
    Forse, prova (usando un ID ). Non sono bravo con le caselle combinate nelle maschere ecc ecc. Di sicuro la casella combinata può mostrare la parte descrittiva ma memorizza nella tabella [interventi] il codice (come faceva la procedura guidata). Se poi vuoi anche visualizzare nel dettaglio degli interventi la descrizione del tipo intervento devi istruire la maschera a cercare l'informazione in base all'ID del tipo intervento. Impostando bene la relazione tra le tabelle tutto diventerà molto più facile. Anche magari passando attraverso una query che "decodifica" l'ID tipo intervento pescando la relativa descrizione (anche qui, dopo aver impostato la relazione tra tabelle, la procedura guidata di creazione della query ti permetterà di scegliere le due tabelle e di prendere da ognuna quello che ti interessa)

    Ho provato a collegare le tabelle, non accade nulla
    Non credo comunque che le maschere creino problemi, esse servono solamente per rendere più "presentabile" il database.
    Penso che mi arrangerò così, è l'unico che va...
    Riguardo a quello che mi avevi detto sul problema degli interventi di formato lungo io ho progettato il database in modo tale che nel campo "Tipo" io scriva solamente la generalità dell'intervento, e che a sua volta mi dovrebbe comparire testualmente nella tabella "Intervento", riferita ovviamente ad un cliente. Per specificare però nel dettaglio ho inserito, nella tabella "Intervento" il campo "Nota", in modo tale che, se proprio voglio sapere in maniera specifica di cosa si fosse trattato l'intervento, andrò a consultare quel dato.
    In questo modo, anche l'unica chiave primaria della tabella "Tipo Intervento" può risultare essere facilmente trovata: certo, non devo scrivere un papiro in quel campo per indicare un intervento!
  • Re: Trasferire dato testo da casella combinata

    AngelPia ha scritto:


    Ho provato a collegare le tabelle, non accade nulla
    Mi tocca imparare come costuire la maschere con le caselle combinate? uffa... io che speravo di evitarle. Forse è la volta buona.

    AngelPia ha scritto:


    Non credo comunque che le maschere creino problemi, esse servono solamente per rendere più "presentabile" il database.
    Altro errore: le maschere sono (dovrebbero essere) l'unico punto di accesso al db da parte dell'utente, che non verrà mai direttamente a contatto con tabelle e query. Una maschera crea problemi solo se non è fatta bene, ma per quello che intendi fare tu è fondamentale e fattibilissima. (almeno ci riescono un po' tutti, fa parte delle prime lezioni di ogni guida di access nella parte che riguarda le maschere... vado a scartabellare)

    AngelPia ha scritto:


    Penso che mi arrangerò così, è l'unico che va...
    ed ecco che ti ri-arrendi. Troppo presto!
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    AngelPia ha scritto:


    Ho provato a collegare le tabelle, non accade nulla
    Mi tocca imparare come costuire la maschere con le caselle combinate? uffa... io che speravo di evitarle. Forse è la volta buona.

    AngelPia ha scritto:


    Non credo comunque che le maschere creino problemi, esse servono solamente per rendere più "presentabile" il database.
    Altro errore: le maschere sono (dovrebbero essere) l'unico punto di accesso al db da parte dell'utente, che non verrà mai direttamente a contatto con tabelle e query. Una maschera crea problemi solo se non è fatta bene, ma per quello che intendi fare tu è fondamentale e fattibilissima. (almeno ci riescono un po' tutti, fa parte delle prime lezioni di ogni guida di access nella parte che riguarda le maschere... vado a scartabellare)

    AngelPia ha scritto:


    Penso che mi arrangerò così, è l'unico che va...
    ed ecco che ti ri-arrendi. Troppo presto!
    Non vorrei rubarti altro tempo, vedrò di scervellarmi e trovare un'altra soluzione.
    Ti ringrazio comunque!
    Un altro problema che mi sorge è l'eliminazione di un record.
    Vorrei, tramite una maschera che mi chiede di inserire il codice del cliente, eliminare poi un record dalla tabella Clienti.
    Sapresti dirmi come si fa?
    Ho pensato alla logica e credo che bisogna prima individuare il record con un comando CercaRecord, ma non lo riesco ad applicare perchè mi chiede una condizione, ed io non riesco a scriverla.
    Se hai un altro modo per eliminare un record tramite una maschera ti sarei grata se me lo spiegassi ^_^
  • Re: Trasferire dato testo da casella combinata

    Richiesta nuova su thread nuovo.
    Già che ci sono: non è possibile che in uno stesso "intervento" (in senso lato del termine) ci possano essere più tipo di intervento? In questo caso la relazione tra le tabelle sarebbe molti a molti. E tu sai come si gestisce una relazione molti a molti, vero?
  • Re: Trasferire dato testo da casella combinata

    Philcattivocarattere ha scritto:


    Richiesta nuova su thread nuovo.
    Già che ci sono: non è possibile che in uno stesso "intervento" (in senso lato del termine) ci possano essere più tipo di intervento? In questo caso la relazione tra le tabelle sarebbe molti a molti. E tu sai come si gestisce una relazione molti a molti, vero?
    Scusa puoi spiegarti meglio? Vorrei sapere la procedura per eliminare un record con la maschera.
    Sì certo che so gestire una relazione N:M, ma perchè dovrebbe esserci più di un tipo di intervento in uno stessto intervento?
  • Re: Trasferire dato testo da casella combinata

    AngelPia ha scritto:


    Philcattivocarattere ha scritto:


    Richiesta nuova su thread nuovo.
    Già che ci sono: non è possibile che in uno stesso "intervento" (in senso lato del termine) ci possano essere più tipo di intervento? In questo caso la relazione tra le tabelle sarebbe molti a molti. E tu sai come si gestisce una relazione molti a molti, vero?
    Scusa puoi spiegarti meglio? Vorrei sapere la procedura per eliminare un record con la maschera.
    Sì certo che so gestire una relazione N:M, ma perchè dovrebbe esserci più di un tipo di intervento in uno stessto intervento?
    Ho inserito in un messaggio unico due cose che mal si conciliano.
    Numero 1

    AngelPia ha scritto:


    Philcattivocarattere ha scritto:


    Richiesta nuova su thread nuovo.
    ...
    Scusa puoi spiegarti meglio? Vorrei sapere la procedura per eliminare un record con la maschera.
    Per una richiesta completamente diversa rispetto a quella di partenza del thread è giusto aprire un nuovo thread. Come potrebbero gli altri utenti trarre beneficio o intervenire sulla richiesta di lumi riguardante la procedura di eliminazione di un record da maschera in un thread intitolato "Trasferire dato testo da casella combinata"?

    Numero 2

    AngelPia ha scritto:


    Philcattivocarattere ha scritto:


    Richiesta nuova su thread nuovo.
    Già che ci sono: non è possibile che in uno stesso "intervento" (in senso lato del termine) ci possano essere più tipo di intervento? In questo caso la relazione tra le tabelle sarebbe molti a molti.
    ...ma perchè dovrebbe esserci più di un tipo di intervento in uno stessto intervento?
    Volevo farti riflettere sulla struttura del db, visto che sei all'inizio e partire quindi con il piede giusto. Quando ho parlato di "intervento", specificando "in senso lato del termine", pensavo ad esempio ad una sorta di "chiamata". Un cliente chiede un "intervento" che si articola in più "tipi intervento": rimozione di un virus, sostituzione di un monitor, configurazione di una stampante, tutti nello stesso intervento, cioè nelle stessa uscita. Ovviamente non è detto che tu abbia questa esigenza. Però pensaci. In questo caso diventa naturale usare la relazione molti a molti creando una tabella "intermedia", che ad esempio potrebbe essere denominata "chiamata" (o uscita), dando così origine a due relazioni uno a molti (tra cliente - chiamata e chiamata - intervento). Un cliente chiede una vostra uscita che comprenderà più interventi e relativi tipi intervento. Tutto qua, solo un suggerimento.
Devi accedere o registrarti per scrivere nel forum
12 risposte