Nuovo record con selezione automatica

di il
26 risposte

Nuovo record con selezione automatica

Ciao a tutti, ecco una domanda molto semplice per voi

ho creato semplice maschera da una query di ricerca del anagrafica cliente
quando trovo il cliente vorrei fare un pulsante che mi apre la maschera di inserimento ordine con già inserito il codice cliente trovato.
Per ora sono solo riuscito a fare l'apertura della maschera ordine in modalità nuovo record ma non riesco a inserire ina utomatico il codice cli trovato

HELP è tutta la sera che ci provo ma niente....

USO access 2013

TKS !

26 Risposte

  • Re: Nuovo record con selezione automatica

    Potresti dare un po' di nomi propri a tutti gli oggetti e campi che entrano in gioco?
    Così riusciamo a venirti incontro meglio.
  • Re: Nuovo record con selezione automatica

    Si certo, questa è la query:
    SELECT Clienti.ID_cliente, Clienti.Cognome, Clienti.Nome, Clienti.telefono, Clienti.cellulare, Clienti.indirizzo, Clienti.comune, Clienti.provincia
    FROM Clienti
    WHERE (((Clienti.Nome) Like "*" & [Inserisci il nome o cognome cliente] & "*")) OR (((Clienti.Cognome) Like "*" & [Inserisci il nome o cognome cliente] & "*"))
    ORDER BY Clienti.Cognome;
    
    e quando mi trova la persona vorrei che mi aprisse la maschera con la scheda anagrafica del cliente, e in questa maschera voglio creare un pulsante che mi apre la maschera di inserimento ordine come nuovo record e con già compilato nel campo cliente che è id cliente della tabella ordini il codice cliente trovato. Questo per evitare di fare copia ed incolla a mano che id cliente trovato

    alcuni campi tabella ordine_testata
    id_ordine_testata
    id_operatore
    data_ora_ordine
    punto_vendita
    cliente => questo è il campo che intendo che in chiave con id cliente della tabella CLienti


    grazie mille !
  • Re: Nuovo record con selezione automatica

    Tu lavori principalmente con la maschera Ordine_testata e hai bisogno di aggiornare (nella maniera più agevole possibile) la casella combinata IDCliente.
    Credo che tu hai bisogno di una procedura come la seguente:
    http://www.divshare.com/download/26560155-fa
    Clicca su Download verde per scaricarlo
    L'esempio di cui parlo io è un po' più complesso, ma siamo lì. Nel tuo caso:
    A non ce l'hai
    B=Clienti
    C=Ordine_testata
  • Re: Nuovo record con selezione automatica

    PURTROPPO non riesco a faro, credo che la parte che serva a me sia questa giusto? poi in access 2013 con mi apre la schermata vba
    7) Gestione dell'evento "Non in elenco" su C.IDB.
    1. Visualizzazione struttura maschera A (con sottomaschera C)
    2. Vai alle Proprietà del campo IDB, scheda Eventi | Non in elenco | clicca sul pulsantino con 3 puntini a destra e crea il seguente codice VBA:

    Private Sub IDB_NotInList(NewData As String, Response As Integer)
    Dim intReturn As Integer
    intReturn = MsgBox(NewData & " non esiste nella lista B1. Vuoi inserirlo?", vbYesNo)
    If intReturn = vbYes Then
    DoCmd.OpenForm "B"
    DoCmd.GoToRecord , , acNewRec
    Forms!B!B1 = NewData
    Else
    End If
    Response = acDataErrContinue
    End Sub

    In questo caso il comportamento dell'utente sarebbe:
    1. Se sceglie un valore esistente nella lista, tutto OK.
    2. Se digita un valore non esistente, appare una finestra messaggio in cui chiede se confermare il nuovo testo. Se Sì, si apre B e viene impostato automaticamente il testo digitato dentro la casella combinata IDB. Se No, la casella combinata resta lì in attesa di una digitazione corretta.
    La gestione dell'evento "Non in elenco" è più usata/conosciuta, ma nulla vieta di far convivere entrambi NotInList e il Click di pulsante ApriB. Può succedere che l'utente sappia già, prima di digitare dentro IDB, che un valore non esiste e preferire di cliccare subito sul pulsante ApriB.
  • Re: Nuovo record con selezione automatica

    Hai colto la parte che ti interessa. Non capisco quando dici "non si apre la schermata VBA". Qualsiasi Evento, quando avvicini il mouse all'estrema destra della zona bianca, appare un piccolo pulsantino con ... (3 puntini). Se clicchi su quello, ti si apre prima una finestra dove chiede se vuoi generare Espressione, Macro o Codice (VBA). Devi scegliere quest'ultimo e ti si aprirà la schermata VBA.
  • Re: Nuovo record con selezione automatica

    A ok trovato ! me lo apriva in un altro modo bo

    cmq ho provato questo codice
    Private Sub nuova_ordinazione_Click(NewData As String, Response As Integer)
    Dim intReturn As Integer
    intReturn = MsgBox(NewData & " non esiste nella lista B1. Vuoi inserirlo?", vbYesNo)
    If intReturn = vbYes Then
    DoCmd.OpenForm "nuovo_ordine"
    DoCmd.GoToRecord , , acNewRec
    Forms!Clienti.ID_cliente!ordine_testata.cliente = NewData
    Else
    End If
    Response = acDataErrContinue
    End Sub
    ma non funge... dove sbaglio ?
  • Re: Nuovo record con selezione automatica

    No
    Forms!Clienti.ID_cliente!ordine_testata.cliente = NewData
    ma
    Forms![nuovo ordine]![nome campo preposto ad accettare NewData] = NewData

    Ovviamente ti consiglio pure di personalizzare il MsgBox.
  • Re: Nuovo record con selezione automatica

    Niente non va... sbaglio la punteggiatura??
    
    Private Sub nuova_ordinazione_Click(NewData As String, Response As Integer)
    Dim intReturn As Integer
    intReturn = MsgBox(NewData & " non esiste nella lista B1. Vuoi inserirlo?", vbYesNo)
    If intReturn = vbYes Then
    DoCmd.OpenForm "nuovo_ordine"
    DoCmd.GoToRecord , , acNewRec
    Forms!nuovo_ordine!ordine_testata.cliente = NewData
    Else
    End If
    Response = acDataErrContinue
    End Sub
  • Re: Nuovo record con selezione automatica

    Tu stai aprendo una maschera di livello gerarchico superiore. Tale maschera si chiama "nuovo_ordine". Come si chiama il campo dove deve andare a finire il testo da te digitato ossia NewData? Che vuol dire "ordine_testata"? Il campo si chiama "ordine_testata" o "cliente"?
    
    DoCmd.OpenForm "nuovo_ordine"
    DoCmd.GoToRecord , , acNewRec
    Forms!nuovo_ordine!ordine_testata.cliente = NewData
    
  • Re: Nuovo record con selezione automatica

    "nuovo_ordine" è il nome della maschera che il pulsante deve aprire in aggiunta nuovo record.
    "cliente" è il nome del campo a cui voglio che ci sia già inserito il codice cliente trovato

    La maschera usa la tabella "clienti" e il campo che mi interessa è "ID_cliente" che andrà inserito nella tabella "ordine_testata" campo "cliente"
  • Re: Nuovo record con selezione automatica

    Da come descrivi sembrerebbe essere così
    Forms!nuovo_ordine!cliente = NewData
    Però sia chiaro che io nel mio esempio ho premesso che per comodità NomeCampoTabella è omonimo di NomeControlloMaschera (quello che accoglie il medesimo campo).
    Se in tabella il campo si chiama Pippo, ma in maschera il Nome controllo si chiama Topolino, la sintassi per chiamare il controllo è:
    Forms!NomeMaschera!Topolino

    asnaldo ha scritto:


    La maschera usa la tabella "clienti" e il campo che mi interessa è "ID_cliente" che andrà inserito nella tabella "ordine_testata" campo "cliente"
    Questo discorso viene affrontato successivamente con il pulsante di ritorno...leggi bene...
  • Re: Nuovo record con selezione automatica

    Mi sa che non mi sono spiegato bene.. ma daltronde mi sto avvicinando solo ora ad access..

    il mio obliettivo è che dalla maschera anagrafica cliente aperta su un determinato cliente, con il pulsante crea ordine, mi apra la form di inserimento nuovo ordine facendone uno nuovo con preinserito nel campo id cliente della tabella ordine l'anagrafica aperta..
    ho provato così ma non va :
    
    Private Sub crea_ordine_Click()
        DoCmd.OpenForm "ordine"
        DoCmd.GoToRecord , , acNewRec
        Forms!ordine!ordine_testata.cliente = Clienti.ID_cliente
    End Sub
    tabella cliente e id_cliente è il campo che vorrei si inserisse in automatico cliccando sul pulsante crea ordine

    tabella ordine nome campo che vorrei trovarmi il codice è cliente

  • Re: Nuovo record con selezione automatica

    Reset. Io ho bisogno di avere le idee chiare.
    Descrivi:
    - tutti i nomi delle tabelle
    - tutti i nomi campo delle tabelle indicando la chiave primaria
    - le relazioni
    - tutti i nomi maschere indicando su quali tabelle poggiano
    Attenzione alle maschere e i suoi campi. Se hai creato le maschere con procedura guidata, Access ha dato lo stesso nome campo della tabella sottostante. Se hai creato la maschera in visualizzazione struttura è molto probabile che le denominazioni campo (che qui prendono il nome di "nome controllo") siano diverse pur contenendo campi reali della tabella sottostante. Vorrei che su questo punto tu avessi le idee chiare, altrimenti ci fraintenderemo all'infinito.
    Poi dici PASSO PASSO cosa vuoi fare.
  • Re: Nuovo record con selezione automatica

    Qui puoi vedere tabelle, campi e relazioni :
    http://goo.gl/n5SIV

    maschera trova_cliente, associata ad una query che cerca nella tabella clienti : dove c'è il pulsante "crea ordine" con la macro che deve partire quando lo clicca

    maschera ordine associata alla tabella ordine_testata: maschera che deve aprire il pulsante sopra descritto. In questa maschera il campo cliente è quello in cui vorrei trovarmi l'id_cliente della scheda cliente aperta nella maschera trova_cliente

    I campi delle maschere si chiamano come i nomi campi delle tabelle

    Spero di essere stato più chiaro.
    Allegati:
    16249_9891eae7910413ce1a3074df3318d39e.png
    16249_9891eae7910413ce1a3074df3318d39e.png
Devi accedere o registrarti per scrivere nel forum
26 risposte