Creare record da intervallo

di il
7 risposte

Creare record da intervallo

Ciao a tutti avrei bisogno di un aiuto riguardo a una tabella che uso a lavoro, dovrei mediante una maschera inserire dei buoni carburante , dato che i buoni sono in serie e spesso vengono assegnate grandi quantità, vorrei capire come fare per inserire 1 record per ogni matricola di buono es:
MASCHERA INSERIMENTO
Assegnazione buoni:
DATA - MARCA- DAL N.1 AL 2000 ,
Vorrei che premendo un pulsante si avvii una macro che crei
1 record con le stessa data e stesse informazioni ma con id cedola diverso da 1 a 2000. Grazie in anticipo per qualsiasi spunto [WHITE SMILING FACE]


Inviato dal mio thl 5000 utilizzando Tapatalk

7 Risposte

  • Re: Creare record da intervallo

    IDCedola deve essere sempre da 1 a 2000? Oppure i valori Da - A li vuoi gestire tu?
    Data e Marca da dove vengono letti?
  • Re: Creare record da intervallo

    Da codice VBA la cosa è molto semplice, definito quanti Records e da che Numero Partire con la Numerazione, su Click si scrivono 3 righe di codice che, in un Ciclo For...Next non fa altro che inserire un Record per volta usando il metodo AddNew dell'Oggetto Recordset che aprirai sulla Tabella in cui inserire...

    Ora però non siamo abituati a fornire codice che chiamiamo "pappa pronta" quindi prova ad implementare qualche cosa di tuo e contribuiamo ad aiutarti.
  • Re: Creare record da intervallo

    Grazie per la dritta . provo .

    Inviato dal mio thl 5000 utilizzando Tapatalk
  • Re: Creare record da intervallo

    Io avrei pensato a una "query di accodamento" che filtra i valori IDCedola Da-A con i 2 valori costanti di Data e Marca. Un clic di pulsante può attivare una macro con azione:
    ApriQuery--->Nome query di accodamento
    oppure analogo codice VBA
    DoCmd.OpenQuery "Nome query di accodamento"
  • Re: Creare record da intervallo

    I Dati NON sono già presenti, deve inserirli... da dove li Filtra...?
    Poi il progressivo chi lo genera...?
  • Re: Creare record da intervallo

    Ciao midife,
    prova a lanciare questa sub nel tuo DB.
    Crea anche una tabella così....non fai confusione con i tuoi dati:
    
    Sub fillIt()
    
    On Error GoTo errorHandler
    
    If MsgBox("Inizio a scrivere ?", vbInformation + vbOKCancel, "avviso") = vbOK Then
        CurrentDb.Execute "Create table T_cedola1 (" & _
                      "idCedola AUTOINCREMENT constraint pk_idCedola primary key, " & _
                      "Marca text(255), " & _
                      "datacedola date, " & _
                      "numerocedola int)", dbFailOnError
    
        Dim i As Integer
        For i = 1 To 2000
            CurrentDb.Execute "insert into t_cedola1 (marca,dataCedola,numeroCedola) values ('" & Me.marca & "',#" & Me.dataCedola & "#," & i & ")", dbFailOnError
        Next
        MsgBox "fatto.", vbInformation, "Avviso"
        Application.RefreshDatabaseWindow
    End If
    
    exiterrorHandler:
        Exit Sub
    
    errorHandler:
        If Err.Number = 3010 Then MsgBox "tabella T_cedola1 già esistente", vbCritical, "Attenzione"
        Resume exiterrorHandler
        
    End Sub
    
    
    un saluto.
  • Re: Creare record da intervallo

    Goku ha scritto:


    ciao midife,
    prova a lanciare questa sub nel tuo DB.
    Crea anche una tabella così....non fai confusione con i tuoi dati:
    ...
    un saluto.
    Se non fai INVERSIONE MM/GG nella data non va bene...
    Me.marca & "',#" & Format$(Me.dataCedola,"mm/dd/yyyy") & "#," & i
    oppure
    Me.marca & "'," & clng(Me.dataCedola) & "," & i
    suggerirei anche di usare al posto di CurrentDB che apre un'istanza ogni volta e non la chiude mai...e 2000 iniziano ad essere troppe...
    
    DbEngine(0)(0).Execute ...
    e di chiudere il Loop in una Transazione per 2 scopi... velocizzare, dal moento in cui l'update verrà eseguito ONESHOT e perchè in caso di ERRORE non ci si trova con un contenuto parziale.

    Esempio:
    Private Sub TestTransaction()
        On Error GoTo Err_TestTransaction
        Dim DB As DAO.Database
        Dim n As Integer
        
        Set DB = DBEngine(0)(0)
        
        DBEngine.BeginTrans
        For n =1 To 2000
            DB.Execute  "insert into t_cedola1 (marca,dataCedola,numeroCedola) values ('" & Me.marca & "'," & CLng(Me.dataCedola) & "," & i & ")", dbFailOnError
        Next
        DBEngine.CommitTrans
        MsgBox "Inseriti n. " & n
    
    Exit_Here:
        DB.close
        Set DB=Nothing
        Exit Sub
    
    Err_TestTransaction:
        DBEngine.Rollback
        MsgBox Err.Description
        Resume Exit_Here
    End Sub
    
Devi accedere o registrarti per scrivere nel forum
7 risposte