Pagina 1 di 1

Campo numerico che si incrementa +1 ed azzeramento

Inviato: giovedì 26 settembre 2013, 11:04
da pinosauro
Ciao a tutti gli utenti presenti e passati,

ho tentato moltissime soluzioni proposte ma nulla. E quindi... Come si fa a creare un campo che si autoincrementa di 1?

Altro quesito strettamente collegato, quando il campo che si autincrementa andrà azzerato qual è la procedura?

Grazie a tutti gli appassionati di OOo :)

Re: Campo numerico che si incrementa +1 ed azzeramento

Inviato: giovedì 26 settembre 2013, 18:26
da Mizio1961
Semplice!!!
Se vuoi una certezza del risultato puoi farlo solo tramite macro su un campo numerico normale (non autoincrementante)
Saluti

Re: Campo numerico che si incrementa +1 ed azzeramento

Inviato: giovedì 26 settembre 2013, 19:45
da pinosauro
Ciao Mizio, anzitutto ti ringrazio della risposta.

ok, le macro ma come faccio praticamente? Mi puoi dare qualche indicazione in più? :?:

grazie mille

Re: Campo numerico che si incrementa +1 ed azzeramento

Inviato: venerdì 27 settembre 2013, 14:36
da Mizio1961
Certo

Codice: Seleziona tutto

private sub cmdNew(oEvent)                   ' DEFINIZIONE NUOVA RIGA
   dim oForm, oConn as object                    ' OGGETTI SU CUI SI OPERA
   dim NBWRK as integer
   '---------------------------------------------'
   oForm  = oEvent.Source.Model.Parent           ' ACQ. FORM CORRENTE
   oConn  = oForm.ActiveConnection                ' ACQ. CONN. DB CORRENTE   
   NBWRK = Fn_SelVN(oConn, "SELECT MAX(NBWRK) FROM T_WRKTES") + 1
   oForm.moveToInsertRow()                       ' MI SPOSTO SULLA NUOVA RIGA
   '---------------------------------------------' SCRIVO DATI DI RIGA
   oForm.getbyname("NBWRK").text = NBWRK         '
   oForm.getbyname("NBWRK").commit = true        '
   oForm.insertrow()                             ' LA INSERISCO IN DB
end sub                                          ' FINE
Dove la Fn_SelVN acquisisce e controlla la presa del dato da tabella con il seguente codice:

Codice: Seleziona tutto

Public Function Fn_SelVN(DBConn, SQLXC)          ' SEL. VAL. NUMERICO DA BD
   '---------------------------------------------'
   '  Apertura resultset attraverso la connessione DBConn e selezione del valore 
   '  numerico contenuto nel primo record trovato che soddisfa la condizione di 
   '  selezione contenuta nell'argomento SQLXC. Gestisce l'errore per sintassi
   '  SQL errata (Fn_SelVN = -1) e la selezione nulla (Fn_SelVN = 0)
   '---------------------------------------------'
   dim OBJRSET as object                         ' VAR. PER RESULTSET
   dim NBER as Double
   dim DESCR as String
   '---------------------------------------------' APERTURA RESULTSET
   on error resume next                          ' GESTIONE ERRORE
   OBJRSET = DBConn.createStatement.executeQuery(SQLXC)   ' APERTURA RESULTSET
   if not isnull(OBJRSET) then                   ' IF    RESULTSET VALIDO
      OBJRSET.next                               ' VADO A PRIMO RECORD
      if OBJRSET.row > 0 then                    ' IF    RECORD TROVATO
         Fn_SelVN = Val(OBJRSET.getString(1))    ' NUMERO LETTO DA TABELLA
      else                                       ' ELSE  RESULTSET VUOTO
         Fn_SelVN = 0                            ' RESTITUISCO 0
      endif                                      ' ENDIF RECORD TROVATO O NO 
      OBJRSET.Close                              ' CHIUSURA RECORDSET
   else                                          ' ELSE  RESULTSET NON VALIDO
      Fn_SelVN = -1                              ' RESTITUISCO -1
   End If                                        ' ENDIF PER EOF
End Function                                     ' FINE
Il tutto si basa sull'acquisizione del nuovo numero di protocollo dalla tabella.
La mia tabella si chiama T_WRKTES e la chiave numerica da incrementare è nel campo NBWRK... ovviamente questi nomi li devi personalizzare secondo le tue necessità
Il compitino da svolgere è il seguente:
1) Creare la form per operare sulla tua tabella
2) Creare un bottone che chiamerai ad esempio: cmdNew con didascalia Nuovo al quale associ la macro cmdNew nell'evento Esegui l'azione
3) Salvi il formulario, lo provi e... ci fai sapere
4) Non c'è un 4!!! Basta così... Al limite se qualcosa non ti torna metti un piccolo esempio del tuo DB con il formulario in cui hai provato il tutto, lo alleghi e vediamo quali problemi sono ancora rimasti
Ok? Saluti e... buon divertimento ;)