Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 6 su 6

access, ripetizione voci campi

  1. #1
    roby_marc non è in linea Scolaretto
    Ciao ragazzi, buona Domenica...
    Ho un problema in più questa mattina. [img]smileys/smiley4.gif[/img]
    Ho una maschera di un dataabase access in cui ogni record corrisponde a un cliente con tanto di nome_cliente + n°cellulare+email ecc...
    siccome i clienti,talvolta sono ripetuti mi servirebbe che al digitare/selezionare un dato cliente nel campo "nome_cliente" se questi è un cliente già presente nel database mi vengano caricati senza doverli ridigitare anche gli altri campi. Ovviamente non tutti i campi della maschera ma solo i campi ripetuti come telefoni indirizzi ecc..
    In pratica mi servirebbe che quando io digito il nome del cliente nel campo alla mia uscita questi abbia un codice che mi vada a ricercare se esiste di già questo nome nel database e quindi nella tabella e se lo trova mi dovrebbe importare anche gli altri dati del cliente.
    AIUTATEMI VI PREGO SONO A BUON PUNTO.
    GRAZIE [img]smileys/smiley18.gif[/img]

  2. #2
    roby_marc non è in linea Scolaretto
    PS.: SCUSATE...all'uscita dal campo il codice dovrebbe controllare sempre se esiste già il cliente ma se non lo trova dovrebbe non dare nessun errore e rimanere scritto nel campo il nome del nuovo cliente.

    grazie ancora

  3. #3
    roby_marc non è in linea Scolaretto
    da buon maniscalco mi sono aggiustato mettendo questo codice che viene eseguito all'uscita dal campo.
    Fa schifo, è infinito e ripetitivo ma funziona... [img]smileys/smiley18.gif[/img]
    With CodeContextObject
    DoCmd.SelectObject acForm, "gest_preventivi_e_lavori", False
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Indirizzo_appuntamento_preventivo"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Indirizzo_appuntamento_preventivo"
    DoCmd.RunCommand acCmdPaste
    .Data_contatto = Now()
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Tel_abitazione"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Tel_abitazione"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Tel_ufficio"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Tel_ufficio"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Cellulare"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Cellulare"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Partita_iva_codice_fiscale"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Partita_iva_codice_fiscale"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "EMail"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "EMail"
    DoCmd.RunCommand acCmdPaste
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.FindRecord Forms!gest_preventivi_e_lavori!Nome_Cliente, acEntire, False, acUp, True, acCurrent, False
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.RunCommand acCmdCopy
    DoCmd.GoToRecord acForm, "gest_preventivi_e_lavori", acLast
    DoCmd.GoToControl "Nome_Cliente"
    DoCmd.RunCommand acCmdPaste
    .Eseguito = False
    DoCmd.GoToControl "Data_appuntamento_preventivo"
    End With


  4. #4
    trader non è in linea Scolaretto
    Non hai specificato l'utilità di questo elenco con clienti che si ripetono.
    Comunque, se devi inserire ad esempio delle ordinazioni o acquisti dei clienti, dovresti strutturare le tabelle in maniera diversa: un tabella contenente tutti i clienti (non ripetuti) ed una tabella contenente le informazioni riguardanti gli acquisti, in cui viene inserito solo il codice del cliente.
    Riguardo alle maschere, dovresti utilizzare una casella a discesa in cui selezionare il cliente desiderato.
    Se si tratta di nuovo cliente dovresti prima registrarlo tramite magari una maschera 'anagrafica clienti', poi inserire l'ordinazione in un'altra maschera.

  5. #5
    roby_marc non è in linea Scolaretto
    Ciao trader...nulla, questo codice fa in modo che quando esci dal campo Nome_Cliente se esistono già i dati per quel cliente va li cerca e li carica nei giusti campi e se non ci sono non fa nulla. Almeno questo è quello che avviene e che mi serve.

  6. #6
    trader non è in linea Scolaretto
    Però in questo modo provocherai delle inutili ripetizioni degli stessi dati nella stessa tabella; ciò si definisce in gergo 'ridondanza'; per eliminare questo inconveniente, come ti ho già scritto, solitamente si struttura il db con due tabelle, una per i clienti e l'altra per gli ordini, in tal modo le informazioni dei clienti non vengono ripetute.
    La relazione tra le due tabelle è data dal codice cliente; se crei una maschera legata alla tabella clienti, selezionando un cliente da una casella a discesa otterrai la visualizzazione automatica degli altri dati del cliente nei campi della maschera che deciderai di inserire; inoltre inserendo una sottomaschera nella maschera clienti relativa agli ordini, non dovrai inserire il codice cliente per ogni ordinazione perchè lo farà automaticamente access per te, a patto che la sottomaschera sia legata alla maschera principale in maniera corretta (con la procedura guidata non dovresti avere problemi).
    Se hai altri dubbi fammi sapere.

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. [Excel] numeri casuali senza ripetizioni
    Da Tormael nel forum Microsoft Excel
    Risposte: 7
    Ultimo Post: 08-04-2013, 22:41
  2. [access 2007] Inibire con vba delle voci....
    Da dasio nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 13-09-2012, 16:31
  3. Risposte: 2
    Ultimo Post: 05-09-2011, 16:51
  4. Limite inserimento voci in ACCESS
    Da Claudio DL nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 12-06-2010, 19:24
  5. [access 2003] esclusione tra 2 voci
    Da Josef1975 nel forum Microsoft Access
    Risposte: 2
    Ultimo Post: 19-04-2006, 11:47