Copiare un campo da una casella di riepilogo a una Sottomaschera

di il
41 risposte

Copiare un campo da una casella di riepilogo a una Sottomaschera

Buongiorno a tutti, ho un problema col mio DB ve lo  espongo con la speranza di risolverlo.

ho 3 tbl ; clienti, visite, immobili.

Il funzionamento è il seguente: mi chiamano e inserisco il cliente dopo di che apro una maschere dove all'interno c'è una sottomaschera (Visite), infine nella maschera stessa troviamo una casella combinata e una di riepilogo che cerca l'immobile d'associare, vorrei che una volta trovato nella casella di riepilogo l'immobile corretto e una volta selezionato con un pulsante copiasse l'ID nella sottomaschera nel campo ID.

posto un foto cosi da farvi comprendere meglio quello che ho scritto se non dovessi essere stato molto chiaro.

https://postimg.cc/Vd2s0wJK

41 Risposte

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Credo tu abbia fornito pochi dettagli per comprendere a pieno la problematica. Ti consiglio, innanzitutto, di indicare tabelle, campi e correlazioni tra tabelle.

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    02/09/2024 - Antony73 ha scritto:


    Credo tu abbia fornito pochi dettagli per comprendere a pieno la problematica. Ti consiglio, innanzitutto, di indicare tabelle, campi e correlazioni tra tabelle.

    le tabelle sono tblclienti , tblvisite, tblimmobili , la correlazione è  Tblvisite CON IDCLIENTE, IDImmobile con relazione uno a molti, per quanto riguarda la  casellacombinata e la casella di riepilogo con origine dati tblImmobile, come detto sopra una volta filtrato l'immobile oggetto dell visita con un pulsante vorrei che IDImmobile vada a riepire il campo IDImmobile della sottomaschera(TblVisite)

    tramite dei video su internet ho trovato e modificato questo codice, che fa in parte ciò che vorrei perchè copia IDImmobile(IDD), ma creando un nuovo record

    Private Sub Comando66_Click()
    CurrentDb.Execute "INSERT INTO tblvisite (IDD) VALUES ('" & Lista & "');"
    Me.Refresh
    End Sub

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Apparte il fatto che mi affiderei preferenziale alle indicazioni di un libro piuttosto che a un video su YouTube, ma quel codice, in teoria, dovrebbe crearti un nuovo record senza inserire altri campi e scritto così non capisco a cosa serva. Inoltre la sintassi è sbagliata poiché stai inserendo in un campo numerico una stringa. Apparte questo, a cosa ti serve Me.Refresh?

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    02/09/2024 - Luca1994 ha scritto:


    tramite dei video su internet ho trovato e modificato questo codice, che fa in parte ciò che vorrei perchè copia IDImmobile(IDD), ma creando un nuovo record

    Beh, se usi la parola insert secondo te cosa deve fare il db? Eliminare?

    Prova con update… ma prima vai al record da modificare che sia current record altrimenti usa la update con la where id=tuoparametro.

    02/09/2024 - Antony73 ha scritto:


    Apparte il fatto che mi affiderei preferenziale alle indicazioni di un libro piuttosto che a un video su YouTube

    Segui questo consiglio… i video li guardi dopo che sai di cosa parlano.

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    02/09/2024 - Luca1994 ha scritto:


    le tabelle sono tblclienti , tblvisite, tblimmobili , la correlazione è  Tblvisite CON IDCLIENTE, IDImmobile con relazione uno a molti, p

    È una molti a molti..

    Io ci andrei da codice tanto non è un inserimento massivo…

    Tabella insert

    Tabella campo = cliente

    Tabella campo 2 = immobile

    Tabella  post

    Ma se vuoi l'inserimento da sql

    INSERT INTO tblvisite (cliente, immobile) VALUES ( controlloidcliente,  controlloidimmobile)

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Dall'immagine postata io osservo MASCHERE COLLEGATE e non sottomaschere (come descritto). 

    Che difficoltà riscontri nel dover SOLO SELEZIONARE IDImmobile in maschera Visite? Cioè, perché hai bisogno di filtrare prima un Immobile, per poi inserirlo in seconda battuta in Visite?

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Dall'immagine sembrerebbe che l'appuntamento sia un popup di clienti… la scheda cliente sullo sfondo mi fa pensare questo.

    Devi crearti il form appuntamenti che mostra la lista cronologica di appuntamenti da filtrare per immobile, cliente e operatore.

    Crei i tre pulsanti o i menu: nuovo, modifica, elimina.

    Più stampa ecc… ecc…

    Quando fai nuovo appuntamento scegli da un popup il cliente, l'operatore se diverso da quello che si è loggato ed infine l'immobile.

    Al popup cliente ti riporti l'id cliente, al popup immobili l'id immobile.

    Alla conferma salvi il record.

    Idem per la modifica dove al popup scegli se modificare il cliente o l'immobile.

    Elimina è banale…

    Il form principale è l'appuntamento non il cliente o l'immobile. Se al popup clienti (ossia l'apertura del form clienti) non esiste il cliente fai (dal form clienti) nuovo, inserisci il cliente e salvi. Alla chiusura ti riporti il nuovo id del cliente. 

    Per gli immobili dubito che sia logico caricare l'immobile in fase di appuntamento, quindi basta una view in sola lettura per cercare l'immobile e alla chiusura riportarti l'id.

    Idem per l'operatore che mostra l'immobile.

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Salve a tutti, intanto vi ringrazio per il tempo che mi state dedicando, detto ciò,  quello che mi è stato suggerito da @sihsandrea di creare un nuovo form e tre pulsanti in realtà l'ho fatto aiutandomi con delle query, dove mi apre  la scheda con tutti i clienti che hanno visto quella determinata proprieta (nelle maschere dedicate agli immobili), stessa cosa nel cliente che mi mostra tutti gli  appartamenti che ha visto quel determinato cliente. la tblvisite mi serve  per creare la scheda visita, Detto ciò come hai detto sopra la maschera e un popup di clienti, infatti come vedi in foto l'id è collegato , per quanto riguarda  il pulsante è importante che mi copi solamente l'id del record selezionato dell'immobile  nella sottomaschera/maschera collegata  TBLVISITE

    come potrei modificare questo codice ?

    CurrentDb.Execute "INSERT INTO tblvisite (IDD) VALUES ('" & Lista & "');"

    ed eventualmente potete aiutarmi a scriverlo ?

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Non chiamarmi pignolo, ma faccio una gran fatica a leggere quello che scrivi. Non usi una punteggiatura adeguata e scrivi come parli. Credo che ti siano stati dati dei suggerimenti validi e continui a postare lo stesso codice, chiedendo di aiutarti nel correggerlo. Hai fatto una ricerca in merito?

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Per come l'hai pensato, significa che prima dell'informatizzazione, la segretaria invece di prendere l'agenda per inserire un appuntamento prendeva lo schedario clienti e ci scriveva sopra l'appuntamento e l'immobile da visionare.

    Per come stai operando non hanno senso neanche le eventuali relazioni tra le tabelle.

    Ripeto, crei il form appuntamenti e quando inserisci l'appuntamento selezioni un cliente e l'immobile o gli immobili che visiterà quel giorno.

    Per la sql che hai mostrato, devi inserire sia il cliente che l'immobile (per come lo hai elaborato puoi inserire solo un immobile per appuntamento e se quel giorno il cliente vuole vedere n immobili devi inserire n appuntamenti).

    Detto questo, io la sql te l'ho scritta prima ma a quanto pare non hai neanche provato a lanciarla.

    Hai tutte le info per procedere, ulteriori interventi sarebbero copie dei precedenti utili solo ad allungare il numero di risposte.

    Fine.

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    03/09/2024 - sihsandrea ha scritto:


    sql

    INSERT INTO tblvisite (cliente, immobile) VALUES ( controlloidcliente,  controlloidimmobile)

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    03/09/2024 - Luca1994 ha scritto:


    Salve a tutti, intanto vi ringrazio per il tempo che mi state dedicando, detto ciò,  quello che mi è stato suggerito da @sihsandrea di creare un nuovo form e tre pulsanti in realtà l'ho fatto aiutandomi con delle query, dove mi apre  la scheda con tutti i clienti che hanno visto quella determinata proprieta (nelle maschere dedicate agli immobili), stessa cosa nel cliente che mi mostra tutti gli  appartamenti che ha visto quel determinato cliente. la tblvisite mi serve  per creare la scheda visita, Detto ciò come hai detto sopra la maschera e un popup di clienti, infatti come vedi in foto l'id è collegato , per quanto riguarda  il pulsante è importante che mi copi solamente l'id del record selezionato dell'immobile  nella sottomaschera/maschera collegata  TBLVISITE

    come potrei modificare questo codice ?

    CurrentDb.Execute "INSERT INTO tblvisite (IDD) VALUES ('" & Lista & "');"

    ed eventualmente potete aiutarmi a scriverlo ?

    04/09/2024 - sihsandrea ha scritto:


    Per come l'hai pensato, significa che prima dell'informatizzazione, la segretaria invece di prendere l'agenda per inserire un appuntamento prendeva lo schedario clienti e ci scriveva sopra l'appuntamento e l'immobile da visionare.

    Per come stai operando non hanno senso neanche le eventuali relazioni tra le tabelle.

    Ripeto, crei il form appuntamenti e quando inserisci l'appuntamento selezioni un cliente e l'immobile o gli immobili che visiterà quel giorno.

    Per la sql che hai mostrato, devi inserire sia il cliente che l'immobile (per come lo hai elaborato puoi inserire solo un immobile per appuntamento e se quel giorno il cliente vuole vedere n immobili devi inserire n appuntamenti).

    Detto questo, io la sql te l'ho scritta prima ma a quanto pare non hai neanche provato a lanciarla.

    Hai tutte le info per procedere, ulteriori interventi sarebbero copie dei precedenti utili solo ad allungare il numero di risposte.

    Fine.

    Concordo pienamente con la linea guida fornita da sihsandrea. A Luca1994 suggerisco di pensare ogni singola utilità del database, separatamente. Cioè:

    • per l'input dati ti concentri in un modo, e vale la pena puntare su Appuntamenti sfruttando le caselle combinate IDCliente, IDImmobile. Quando questi dati mancano, sfrutti l'evento “Non in elenco”…ecc…
    • per la ricerca dati, fai in modo di usare tutte le query che ti servono, magari fai poggiare tali dati su apposite maschere…
    • evita di fare un “tuttoinsieme” che ti confonde le idee (anche a noi)
    • l'approccio che hai richiesto (cercare l'immobile, poi copiare IDImmobile) è tecnicamente sbagliato/sconveniente
  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    Ciao  e scusate se sono stato assente, ragazzi che dire, avete ragione, so benissimo questo DB andrebbe rifatto da zero, purtroppo ho fatto tantissimi errori in fase di realizzazione, ho iniziato con conoscenze pari allo zero e mi sono appassionato nel tempo,  ad oggi sono andato “avanti” copiando le varie formule che ho trovato per il web, la funzione che vorrei inserire e quella  che usavo  su un  vecchio gestionale, e questo DB nasce proprio da quella base  con un risultato grossolano (ma funzionale), detto ciò, ho provato ad usare il suggerimento  di sihsandrea, ma non sono riuscito, ho fatto “NSERT INTO tblvisite (IDcliente, IDimmobile) VALUES ( ID, LISTA)” nel controlloidcliente" , ho inserito il controllo della maschera IDcliente E IDIMMOBILE   il controllo lista, e non ho ottenuto nessun risultato, ho provato anche a modificarla  aggiungendo  “, ,,ID=ID " per riuscire a capire se posso richiamare e lavorare su  quel determinato record e aggiungere  semplicemente l'immobile come da richiesta iniziale ma nulla, tral'altro mi avete fatto notare che la maschera nasce per un singolo appuntamento alla volta, è vero, tuttavia vi faccio notare che di appuntamenti  posso inserirne altri creando altri record nella  Tbl visite e tramite una query mi richiamo DATA e ID , quando stampo gli appuntamenti di del cliente  quel giorno mi dice quali  appartamenti  dovrò fargli visionare. Infine il consiglio  di creare un nuovo form per le visite e far camminare tutto in modo  singolo e non confusionario  sicuramente  lo  farlo appena  lavorerò sull'agenda, ma un passo alla volta, per adesso vorrei  provare a risolvere cosi per tamponare questa situazione, aggiungendo IDD in modo manuale ottengo ciò che voglio fare ma se riuscissi a sistamare il pulsante  ne sarei felice.

    NB: CHIEDO SCUSA SE NON RIESCO A TRASFORMARE I VOSTRI SUGGERIMENTI, MA COME DETTO SOPRA SONO UN DILETTANTE.

  • Re: Copiare un campo da una casella di riepilogo a una Sottomaschera

    09/09/2024 - Luca1994 ha scritto:


    NSERT INTO tblvisite (IDcliente, IDimmobile) VALUES ( ID, LISTA)”

    Stai facendo un po' di confusione…

    Lista cosa è? Il controllo? Allora devi trattarlo da controllo se scrivi lista inserisce ‘lista’ non il contenuto.

    Devi considerare la lista degli immobili da visitare come una detail della tabella appuntamenti.

    Avrai una tabella appuntamento filtrata per data, posizionando alla data odierna.

    Avrai due pulsanti precedente e successivo dove vedrai gli appuntamenti settimana precedente e settimana successiva. O se preferisci giorno precedente e giorno successivo.

    Non devi necessariamente inserire il cliente. Prendo spunto da un gestionale studio dentistico.

    Nell'agenda, vai ad inserire il nominativo ed il recapito telefonico senza necessariamente inserire il nuovo cliente (probabilmente non si presenterà senza avere la briga di annullare) ma a chi prende l'appuntamento serve per chiamare il cliente per la conferma (sempre se risponde al telefono).

    Fatto cio, sia che usi il cliente caricato o un cliente provvisorio (idcliente non in elenco come ti è stato suggerito), passi agli immobili che sono gestiti come fossero articoli di una fattura.

    Apri il form immobili o ne selezioni uno dalla combobox, selezioni quello con le caratteristiche desiderate e alla chiusura ti inporti l'id.

    Non devi neanche scrivere codice, la relazione inserisce già tutti i dati basta mettere l'id immobile.

    Salvi e ti ritrovi l'appuntamento in agenda. Avrai una tabella master con gli appuntamenti e allo scorrere vedrai la detail cambiare in base all'appuntamento selezionato.

    La vera difficoltà la riscontri nel selezionare la settimana dal lunedi al sabato o domenica che mostra gi appuntamenti in risposta ad una sql where data = lunedi e data = domenica. Per i pulsanti next e prior.

    Lascia fare alle relazioni senza scrivere ulteriore codice per inserire le righe dell'appuntamento.

Devi accedere o registrarti per scrivere nel forum
41 risposte