Trasferire dati da maschera a tabella esterna

Anonimo
2017-01-07T23:41:38+00:00

Ciao a tutti.

approfitto ancora della vostra pazienza per esporvi un nuovo quesito (richiesta d'aiuto).

Quando stampo una fattura dalla maschera "fatture", con il relativo tasto "stampa", vorrei che venissero trasferiti tutti i dati salienti (cliente, dataFt, NumFt, scadenza, importo...) in una tabella esterna "scadenzario" che non è aperta quando uso la maschera "fatture".

Ho provato ad usare questo codice, ma ottengo l'errore "Errore di compilazione - tipo definito dall'utente non definito".

Dim DBCOrrente As DAO.Database

Dim Tabella As DAO.Recordset

Set DBCOrrente = CurrentDb

Set Tabella = DBCOrrente.openrecordset("scadenzario")

Tabella.Addnew

Tabella.fields("cliente") = Denominazione.Value

Tabella.Update

Tabella.Close

DBCOrrente.Close

Questo codice l'ho trovato su un'altra discussione e l'ho adattato al mio caso.

Dov'è l'errore? Utilizzo Access 2016, forse quel codice non è compatibile con la versione attuale?

Grazie a tutti.

Giuseppe

Microsoft 365 e Office | Access | Per la casa | Windows

Domanda bloccata. Questa domanda è stata eseguita dalla community del supporto tecnico Microsoft. È possibile votare se è utile, ma non è possibile aggiungere commenti o risposte o seguire la domanda.

0 commenti Nessun commento

3 risposte

Ordina per: Più utili
  1. Anonimo
    2017-01-08T11:21:42+00:00

    ciao Giuseppe,

    [...]

    innanzitutto grazie per la completissima consulenza.

    [...]

    prego :-)

    [...]

    Effettivamente la query di accodamento mi era proprio sfuggita di mente (sarà meglio, le prossime volte, dormirci sopra così riacquisto anche la lucidità necessaria...).

    [...]

    eh, capita.

    [...]

    L'esigenza di una tabella esterna sorge dalla necessità di editare altri dati nello scadenzario che, con una normale query non sarebbe possibile (ad esempio campi note per la gestione del recupero crediti, ecc.).

    La soluzione della query di accodamento è sicuramente la più ottimale per la mia esigenza.

    [...]

    sei sicuro?

    e se per esempio, la tabella scadenziario avesse semplicemente una chiave esterna sulla tabella fatture in modo da permettere di inserire, commenti, note, e quanto altro necessario per la gestione della scadenza, potenzialmente non rispettata, o comunque da gestire in qualche modo...?

    Esempio:

    tabella fatture

        idFattura Pk,

        dataFattura data/ora

        numeroFattura, testo

        idcliente FK

    tabella scadenziario

        idScadenziario PK

        idfattura            FK

       dataSollecito      data/ora

       commento          memo

    non ho la presunzione di conoscere il tuo progetto, ma rifletterei ancora un attimo prima di duplicare informazioni già presenti.

    [...]

    Stanotte, quando mi sono deciso a scrivere, non riuscivo ad accedere ai riferimenti VBE (mi dava il campo non selezionabile), adesso invece la voce "riferimenti" è abilitata ed è anche flaggato il Microsoft Office 16.0...

    [...]

    ok, usa il recordset quando proprio non ne puoi fare a meno.

    [...]

    Grazie ancora per le preziose indicazioni.

    Buona domenica

    Giuseppe

    [...]

    anche a te,

    ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento
  2. Anonimo
    2017-01-08T10:56:03+00:00

    Ciao Sandro,

    innanzitutto grazie per la completissima consulenza.

    Effettivamente la query di accodamento mi era proprio sfuggita di mente (sarà meglio, le prossime volte, dormirci sopra così riacquisto anche la lucidità necessaria...).

    L'esigenza di una tabella esterna sorge dalla necessità di editare altri dati nello scadenzario che, con una normale query non sarebbe possibile (ad esempio campi note per la gestione del recupero crediti, ecc.).

    La soluzione della query di accodamento è sicuramente la più ottimale per la mia esigenza.

    Stanotte, quando mi sono deciso a scrivere, non riuscivo ad accedere ai riferimenti VBE (mi dava il campo non selezionabile), adesso invece la voce "riferimenti" è abilitata ed è anche flaggato il Microsoft Office 16.0...

    Grazie ancora per le preziose indicazioni.

    Buona domenica

    Giuseppe

    La risposta è stata utile?

    0 commenti Nessun commento
  3. Anonimo
    2017-01-08T08:25:47+00:00

    ciao Giuseppe,

    mmm... se la ragione della copia, diciamo così, è legata alla gestione di uno scadenziario, direi che è una scelta errata, i dati per elaborare lo scadenziario ci sono già tutti senza doverli duplicare.

    Meglio evitare ridondanze nella gestione di un database relazionale, come il fatto di memorizzare nelle tabella campi calcolati vedi importo.

    Veniamo ora alla tua domanda.

    Oltre quanto sopra, meglio optare per l'utilizzo di recordset come ultima ratio, le iterative solution sono le lente rispetto alle set based, così che ti consiglierei un'action query che va a popolare la tabella scadenziario.

    Aiutati con il wizard, crea una query di accodamento, scegli i campi che ti interessano e imposta la clausula where sulla chiave primaria della tabella fatture.

    lo statement che ottieni dovrebbe essere più o meno così.

    INSERT INTO scadenzario( idfattura, IDCliente, )

    SELECT fattura.idfattura, fattura.IDCliente

    FROM fattura

    WHERE fattura.IDOrdine=Eval("[forms]![fattura]![idfattura]")

    wrappa il parametro con eval altrimenti ottieni un errore.

    Lancia l'action query in questo modo :

    DBEngine(0)(0).Execute "nomeDellaQuery", &H80   ' personalizza il nome della query

    dopo la stampa del report :

    DoCmd.OpenReport ReportName:="fattura", _

                               View:=acViewPreview, _

                               filtername:=Null, _

                               whereCondition:="idfattura=" & Me.idfattura

    Nel tuo codice non ci sono errori evidenti, mancano solo i riferimenti corretti.

    In VBE, strumenti, riferimenti e metti la spunta su Microsoft Office 16.0 database engine office library

    riprova  e vedrai che ottieni l'accodamento voluto.

    Ciao, Sandro.

    La risposta è stata utile?

    0 commenti Nessun commento