Numerazione record

di il
13 risposte

Numerazione record

Salve,
avrei bisogno ancora del vostro aiuto!!

Ho due tabelle PREVENTIVO e RATE .... hanno tutte e due un campo contatore...

Vorrei fare in modo che per la tabella rate io abbia una numerazione di questo tipo

PREVENTIVO 1
rata 1
rata 2
rata 3

PREVENTIVO 2
rata 1
rata 2


e non

PREVENTIVO 1
rata 1
rata 2
rata 3

PREVENTIVO 2
rata 4
rata 5


Come posso fare per inserire questa "variabile" se così si può chiamare???


Grazie Silvia

13 Risposte

  • Re: Numerazione record

    Ciao,
    - modificato da contatore a formato numero
    - togli l'indice/PK
    - modifica il vba con questo:
    
    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_ID_RATA = 1
                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 (IDRATA, IDPREVENTIVO, DataScadenzaRata, DATAPAGAMENTO) VALUES (" & V_ID_RATA & "," & V_ID_PREVENTIVO & ", '12/01/2012', '12/01/2012')"
                
                DBS.Execute V_Insert
                
                V_ID_RATA = V_ID_RATA + 1
                Next
    
        RDS.MoveNext
    Loop
    
    RDS.Close
    
    End Sub
    
  • Re: Numerazione record

    Ti adoro! Grazie holiday.. troverò il modo per ricambiare!
  • Re: Numerazione record

    Nella speranza che i suggerimenti vengano dati con uno spirito di BUONA TECNICA soprattutto agli UTENTI non in grado di capire gli errori..., quelli più bisognosi che gli vengano spiegate le cose in modo costruttivo non in modo errato ..!
    
    Sub rateizzazione()
    
    	On Error Goto Err_Handler
        Dim rst As DAO.Recordset
    
        STRSQL = "SELECT ID_PREVENTIVO, COSTO_TOTALE, ACCONTO, RATE FROM PREVENTIVO ORDER BY ID_PREVENTIVO"
           
    
        Set RDS = DbEngine(0)(0).OpenRecordset(STRSQL,dbOpenSnapshot)
    
        Do Until RDS.EOF
            V_ID_RATA = 1
            V_RATE = RDS.Fields("RATE")
            V_ID_PREVENTIVO = RDS.Fields("ID_PREVENTIVO")
    
            For X = 1 To V_RATE
                       
                V_Insert = " INSERT INTO RATE (IDRATA, IDPREVENTIVO, DataScadenzaRata, DATAPAGAMENTO) VALUES (" & V_ID_RATA & "," & V_ID_PREVENTIVO & ", '12/01/2012', '12/01/2012')"
               
                DbEngine(0)(0).Execute V_Insert, dbFailOnError
               
                V_ID_RATA = V_ID_RATA + 1
            Next
    		RDS.MoveNext
    	Loop
    
    Exit_Here:
    	On Error Resume Next
    	RDS.Close
    	Set RDS=Nothing
    	Exit Sub
    Err_Handler:
    	MsgBox "Errore Numero " & err.Number & " - " & err.Description
    	Resume Exit_Here
    End Sub
    1) Non si usano QueryDEFS temporanee, in quel modo non servono a NULLA.
    2) Non serve forzare il MoveLast e First se si obbliga nella Query l'ordinamento
    3) Non si dichairano 1000 volte gli oggetti Database
    4) Si distruggono gli oggetti alla fine.
  • Re: Numerazione record

    Ciao Alex, il tuo codice mi da errore!! Non capisco il motivo!
  • Re: Numerazione record

    Ciao Holiday.. il tuo codice funziona... l'unica limitazione che ha è che,
    devo cliccare sulla sottomaschera rate (che ho fatto tramite una query) e poi cliccare sul pilsante genera rate.. altrimenti non mi aggiorna la sottomaschera... come mai??
  • Re: Numerazione record

    Ciao Silvia,
    l'mdb ha un form Frm_Main che contiene un subform Frm_Rate e un subform Frm_Preventivo.
    Il tasto "Genera Rate" è sul form Frm_Main
    Il codice che aggiorna il subform Frm_Rate è nel "on click" del comando "Genera Rate"
    
    Private Sub Comando4_Click()
    rateizzazione
    Frm_Rate.Requery
    End Sub
    
    prova a vedere se è presente il comando Frm_Rate.Requery

    Ciao
  • Re: Numerazione record

    Ti mando in allegato il file che ho modificato secondo le mie esigenze... se non ti aggiorna il subform rateform cliccaci sopra e poi premi genera rate..
  • Re: Numerazione record

    bubbetta ha scritto:


    Ciao Alex, il tuo codice mi da errore!! Non capisco il motivo!
    Mi era scappata la stringa SQL... ora credo vada.

    Ti invito tuttavia a ragionare con la tua testa, a prescindere dal fatto che ti venga proposto codice VELOCE... perchè questo non ti insegna nulla.

    Le cose andrebbero spiegate da una parte, provate e comprese con senso critico.

    Purtroppo vedo che tu non hai la preparazione per capire quanto ti viene suggerito, e nemmeno di valutare gli errori grossolani che vengono esposti come suggerimento.

    La scelta di come procedere è tua, io non risponderò ad utenti non spinti alla comprensione, mi limiterò ad evidenziare tuttavia gli erorri banali dati come suggerimento che potrebbero essere fuorvianti... come questi.

    P.S. è estremamente deprecabile lo scambio PRIVATO di esempi.
  • Re: Numerazione record

    Non so come caricarli qui sul forum....
    in che senso ti è scappata la stringa sql??? qual'è il codice giusto?
    sto cercando di studiarlo e di capire gli errori ...

    Grazie silvia
  • Re: Numerazione record

    Ciao Holiday.. il tuo codice funziona... l'unica limitazione che ha è che,
    devo cliccare sulla sottomaschera rate (che ho fatto tramite una query) e poi cliccare sul pilsante genera rate.. altrimenti non mi aggiorna la sottomaschera... come mai??
    Ciao Silvia,
    dovresti mettere
    Me.Refresh
    prima di chiamare la sub "rateizzazione"
    Quindi lo script del comando "GENERA RATE" diventa:
    Private Sub Comando4_Click()
    Me.Refresh
    rateizzazione
    rateform.SetFocus
    rateform.Requery
    End Sub
    Per tua conoscenza: il calcolo delle rate veniva eseguita quando il record appena inserito con il tasto "NUOVO PREVENTIVO" non era presente ancora nella tabella preventivi, la scrittura fisica del record in tabella non era stata effettuata
  • Re: Numerazione record

    FUNZIONA PERFETTAMENTE! ORA MI CREO IL CODICE CHE MI CANCELLA I DOPPIONI CHE SI GENERANO NELLA TABELLA RATE SE CLICCO DUE VOLTE SUL TASTO GENERA RATE...

    Grazieeeeeee
  • Re: Numerazione record

    Si puo fare secondo te con una query di eliminazione???
  • Re: Numerazione record

    Ciao Silvia,
    non saprei, dovrei verificare. Nel frattempo fai le tue prove, se ci sono problemi, fai prima delle ricerche su internet, cerca di risolvere in autonomia ed eventualmente se proprio non riesci, chiedi


    Michele
Devi accedere o registrarti per scrivere nel forum
13 risposte