Come inserire nuovi record in modo dinamico

di il
11 risposte

Come inserire nuovi record in modo dinamico

Salve,
sono nuova del Forum.
Volevo chiedere un aiuto a tutta la community!!!
Sto creando un piccolo db in access.. ma sono ferma già da alcuni giorni su un dilemma...
ho provato con guide e codici vari ma non riesco ad uscirne.

Mettiamo il caso che ho una tabella di preventivi. Uno dei campi della tabella si chiama " Numero di rate" e contiene, appunto, il numero di rate previste per il preventivo.

Avrei bisogno di creare in modo dinamico n record in base al valore inserito nel campo Numero di rate in una tabella( collegata a quella sopracitata con relazione uno a molti) chiamata rate.
Ho provato a farlo con una maschera che ha un pulsante... ma non riesco a farlo!!!

Avete qualche idea????

Grazie a tutta la community!

11 Risposte

  • Re: Come inserire nuovi record in modo dinamico

    Ciao,
    ipotizzando la tabella preventivi e la tabella rate come segue:

    PREVENTIVO
    ID_Preventivo |Costo_Totale |Acconto |Rate
    1 | 150 |20 |10
    2 | 250 |40 |15

    RATE
    IDRATA IDPreventivo DataScadenzaRata DataPagamento
    51 |1 |12/01/2012 |12/01/2012
    52 |1 |12/01/2012 |12/01/2012
    53 |1 |12/01/2012 |12/01/2012
    54 |1 |12/01/2012 |12/01/2012

    il vba da utilizzare per alimentare la tabella rate con il numero di rate indicate nel campo "rate" della tabella preventivi è:
    Sub rateizzazione()
    
        Dim DBS As DAO.Database
        Dim QDF As DAO.QueryDef
        Dim rst As DAO.Recordset
    
            STRSQL = "SELECT ID_PREVENTIVO, COSTO_TOTALE, ACCONTO, RATE FROM PREVENTIVO"
            
            Set DBS = CurrentDb
            Set QDF = DBS.CreateQueryDef("", STRSQL)
            Set RDS = QDF.OpenRecordset(dbOpenSnapshot)
    
        RDS.MoveLast
                RDS.MoveFirst
                Do Until RDS.EOF
    
                V_RATE = RDS.Fields("RATE")
                V_ID_PREVENTIVO = RDS.Fields("ID_PREVENTIVO")
    
                For X = 1 To V_RATE
                
                Set DBS = CurrentDb
                
                V_Insert = " INSERT INTO RATE (IDPREVENTIVO, DataScadenzaRata, DATAPAGAMENTO) VALUES (" & V_ID_PREVENTIVO & ", '12/01/2012', '12/01/2012')"
                
                DBS.Execute V_Insert
                
                Next
    
        RDS.MoveNext
    Loop
    
    RDS.Close
    
    
    End Sub
    Se ti da errore sugli oggetti ADO è dovuto al fatto che devi attivare le reference "Microsoft Office Access Databese...."
  • Re: Come inserire nuovi record in modo dinamico

    holidaysoft.it ha scritto:


    Ciao,
    ...
    Se ti da errore sugli oggetti ADO è dovuto al fatto che devi attivare le reference "Microsoft Office Access Databese...."
    Speriamo di no... non hai inserito alcun Oggetto ADO fortunatamente hai usato DAO.

    Faccio 3 considerazioni, vedetele come credete:

    1) A che vantaggio aprire una Query TEMPORANEA...? Basta certamente un Recordset, e risparmi un'oggetto non utile.

    2)Che vantaggio ha inserire in un Ciclo la continua attribuzione di un'Oggetto CurrentDb, che come certamente saprai istanzia tutte le volte una sessione senza che poi venga adeguatamanente distrutta...?
    Assegna la variabile[DBS] fuori dal Ciclo visto che l'oggetto Database in questione è quello e distruggi gli Oggetti all'uscita.
    Meglio ancora se si lavora in un Singolo WorkSpace usare questa versione che non richiede nulla
    
    DbEngine(0)(0).Execute V_Insert
    3) Ultimo punti di vista... siamo certi che il Ciclo non poteva essere evitato con una Query INSERT da Tabella con una struttura simile...?
    
    NSERT INTO MyTable  (PriKey, Description)
           SELECT ForeignKey, Description
           FROM SomeView;
    questo esempio è preso da MSDN...
    Ciao
  • Re: Come inserire nuovi record in modo dinamico

    Grazie per le risposte...
    io nella tabella rate non ho la data di scadenza.. perchè è un campo calcolato.. quindi ce l'ho nella query e, in automatico mi calcola la scadenza a 1-2-3-4.... mesi...

    Posso cmq usare il codice indicato??

    Avete altri suggerimenti?

    Grazie mille a tutta la commuity

    Silvia
  • Re: Come inserire nuovi record in modo dinamico

    Si, puoi comunque utilizzare il codice indicato eliminando dalla insert la data scadenza

    Ciao
    Mik
  • Re: Come inserire nuovi record in modo dinamico

    bubbetta ha scritto:


    Grazie per le risposte...
    io nella tabella rate non ho la data di scadenza.. perchè è un campo calcolato.. quindi ce l'ho nella query e, in automatico mi calcola la scadenza a 1-2-3-4.... mesi...

    Posso cmq usare il codice indicato??
    Quel codice pur funzionale è tecnicamente sbagliato per i motivi evidenziati, ma puoi usarlo se non ne comprendi gli errori e ti basta il COPIA/INCOLLA.

    bubbetta ha scritto:


    Avete altri suggerimenti?
    Al punto 3 della mia precedente ho dato la soluzione che io userei... non mi pare complessa, e credo che possa farti risparmiare moltissimo codice inutile.

    bubbetta ha scritto:


    Grazie mille a tutta la commuity

    Silvia
  • Re: Come inserire nuovi record in modo dinamico

    Non riesco ad utilizzare la tua procedura di query insert per fare ciò che voglio...

    mettiamo il caso io abbia le tabella esposte da holidays... come devo fare per fare questa procedura...

    la query non mi aggiunge in automatico tante rate per quante sono quelle indicate nel preventivo.

    A me dovrebbe venire una cosa del genere (mando lo stamp).... ovviamente in modo automatico...
    dopo calcolerò in automatico la scadenza delle rate che sarà per la prima 1 mese dall'accettazione del preventivo... per la seconda due mesi... e così via.

    Grazie ancora Silvia
    Allegati:
    11315_2ec74643798833dd7dc56d463c29f523.png
    11315_2ec74643798833dd7dc56d463c29f523.png
  • Re: Come inserire nuovi record in modo dinamico

    Non so come allegare l'mdb con l'idea su esposta. Nell'mdb è presente una maschera preventivo e rate. Quando premi il tasto "Genera Rate" vengono create n rate quante sono indicate nei preventivi

    prima di generare le rate
    prima di generare le rate


    Dopo aver generato le rate
    Dopo aver generato le rate

    Fatemi sapere

    Ciao
    Mik
  • Re: Come inserire nuovi record in modo dinamico

    Non riesco a fare quello che hai proposto... ogni rata del preventivo avrà una data di scadenza diversa (che forse so già come calcolare)...
    il problema è che non mi genera in automatico le rate....
  • Re: Come inserire nuovi record in modo dinamico

    Per capirci dovrebbe venire cosi... nelle rate compaiono solo le rate del preventivo corrente
    generate automaticamente (grafica a parte che non ho curato ora)
    Allegati:
    11315_f8d1cb042bfab89fe26e99d52181330f.png
    11315_f8d1cb042bfab89fe26e99d52181330f.png
  • Re: Come inserire nuovi record in modo dinamico

    Ciao,
    ripeto, posso solo inviarti l'mdb e vedere se è cosa ti aspetti. Non so come allegare l'mdb e non so la tua mail

    Michele
  • Re: Come inserire nuovi record in modo dinamico

    GRANDE HOLIDAY! UTENTE DA 10! GRAZIE PER L'AIUTO!
Devi accedere o registrarti per scrivere nel forum
11 risposte