Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 18

Riempire campi vuoti

  1. #1
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Buonasera a tutti
    penso succeda a tutti di sbattersi un giorno intero senza poterne venire a capo.

    Nelle schede del personale caricate nel pc, hanno inserito solo una data iniziale (sebbene inserito Fine) e la categoria, e poi la cronologia e le date di ogni fine attività lavorativa.

    In questo modo:
    CodFisc.—-Cronol—— dataInizio—-—dataFine——categoria
    XXXX.—— ——1————VUOTO———00/00/00——VUOTO
    XXXX.—— ——2————VUOTO———00/00/00——VUOTO
    XXXX.—— ——3————VUOTO———00/00/00——VUOTO
    XXXX.—— —-Fine—-—00/00/00—--—VUOTO————A

    YYYYY.—— ——1—-——00/00/00——00/00/00——VUOTO
    YYYYY.—— ——2——-—00/00/00——00/00/00——VUOTO
    YYYYY.—— —Fine—--—00/00/00—-—VUOTO————B

    ZZZZ.—— ——1————VUOTO———00/00/00——VUOTO
    ZZZZ.—— ——2————VUOTO———00/00/00——VUOTO
    ZZZZ.—— ——3————VUOTO———00/00/00——VUOTO
    ZZZZ.—— ——4————VUOTO———00/00/00——VUOTO
    ZZZZ.—— —Fine——-—00/00/00———VUOTO————C

    In pratica se il campo è vuoto deve essere valorizzato con il valore del corrispondente record ‘Fine’.
    In tal modo sarà possibile calcolare i giorni lavorati.

    Ho utilizzato il listato di un codice di un altro programma già funzionante (ma in disuso da snni).
    Access trova mille problemi. Una volta mi dice loop senza do , il che non è vero. Apertura connessione Dao e lo indica mancante nei riferimenti e tanti sltri.

    Sto scrivendo , vista l’ora ,dal cellulare e non posso postare il codice. Lo farò domattina.
    Grazie anticipatamente a chi vorrà aiutarmi.
    ......
    Ultima modifica di Found; 07-02-2021 23:36 

  2. #2
    L'avatar di dragone bianco
    dragone bianco non è in linea Amanuense
    Post
    7,753
    Like Inviati  
    0
    Like Ricevuti  
    2
    puoi semplicemente usare una QUERY
    il campo calcolato esegue un IF (SE)
    sulla data inizio
    Se datainzio=NULL
    Scrivi data fine
    altrimenti scrivi datainzio

    Su questa query baserai i tuoi calcoli

    Se vuoi cimentarti con il VBA leggi quest'articolo
    [Access] Leggere/scrivere dati nelle tabelle tramite VBA (DAO)

    Ciao
    ℹ️ Leggi di più su dragone bianco ...

  3. #3
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Gentile Dragone Bianco,
    proverò la strada che mi suggerisci.

    Il tuo articolo è praticamente perfetto (lo conservavo tra i miei appunti), però non riesco ad andare oltre questo codice (che ahime non funziona).
    sono oltre 10 anni che non mi avvicino al vba, e sono fortemente arruginito!

    Prima di affrontare la tua soluzione, avrei piacere di vedere funzionare questo tentativo:

    Private Sub Comando207_Click()
    
    Dim rs As DAO.Recordset, RIC As String, DTPREN As String, PRIOR As String, NRRIC As String, wk_Matric As String
     
    Set rs = CurrentDb.OpenRecordset("PRIORITA2020-Filtrato")
    
      Do Until rs.EOF
        wk_Matric = rs!CodFisc
            
      DTPREN = ""
      PRIOR = ""
      NRRIC = ""
      
            
        Do Until rs.EOF Or wk_Matric <> rs!CodFisc
             If rs!Cronol = "Fine" Then
             DTPREN = rs!DataInizio
             PRIOR = rs!categoria
             NRRIC = rs!CodFisc
             rs.MoveNext
             'If rs.EOF Then Exit Do
        Loop
        
        Do Until rs.EOF Or wk_Matric <> rs!CodFisc
            rs.Edit
             If rs!Cronol <> "Fine" And rs!CodFisc = NRRIC Then
             rs!DataInizio = DTPREN
             rs!categoria = PRIOR
             rs.Update      
             rs.MoveNext
             If rs.EOF Then Exit Do
         Loop
     
    Loop
    
    End Sub
    
    GRAZIE
    Ultima modifica di Found; 08-02-2021 08:07 

  4. #4
    L'avatar di AntonioG
    AntonioG non è in linea Moderatore Globale Ultimo blog: Commodore 64 e Codemotion
    Post
    17,481
    Blogs
    5
    Like Inviati  
    6
    Like Ricevuti  
    34
    Found... utilizza i tag CODE per il codice nel forum. Correggi il messaggio precedente, grazie.
    ℹ️ Leggi di più su AntonioG ...

  5. #5
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    Non può bastare una query Update...?
    Update T1 SET FLD1=tuovalore
    WHERE fld1 is null
    
    Poi la esegui con execute...
    ℹ️ Leggi di più su @Alex ...

  6. #6
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da AntonioG Visualizza il messaggio
    Found... utilizza i tag CODE per il codice nel forum. Correggi il messaggio precedente, grazie.
    chiedo scusa, l'avevo dimenticato ....

  7. #7
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Non può bastare una query Update...?
    Update T1 SET FLD1=tuovalore
    WHERE fld1 is null
    
    Poi la esegui con execute...
    Grazie Alex, sicuramente più immediato

    ma ... prima dovrei leggere DataInizio del rigo Fine, poi tornare indietro e (per lo stesso CodFisc) nelle righe precedenti se il valore di DataInizio isNull fare l'update, quindi passare al CodFisc successivo e con la query non ho chiaro come fare tutto questo.

    motivo per cui ho pensato a quel codice postato prima
    Ultima modifica di Found; 08-02-2021 08:32 

  8. #8
    L'avatar di @Alex
    @Alex non è in linea Moderatore Globale
    Post
    16,802
    Like Inviati  
    0
    Like Ricevuti  
    23
    Io non ho capito nulla... magari spiegati meglio.
    Ino ogni caso il codice che hai pubblicato non funziona di certo, continui a ciclare il RS 3 volte ad ogni ciclo perdendo di vista il Bookmark principale... questo è assurdo.

    Nella sostanza devi lavorare con 2 Recordset Annidati.
    Se ad essere il criterio principale è il C.F. allora devi estrarre una prima Query Raggruppata o in DISTINCTROW per C.F. nel primo RS Esterno in sola lettura, poi apri un RS interno, in Scrittura, in cui imponi il Criterio del C.F., e solo in quello vai a ciclare i dati guardando la Data...

    Vedi tu.
    Ultima modifica di @Alex; 08-02-2021 09:50 
    ℹ️ Leggi di più su @Alex ...

  9. #9
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Io non ho capito nulla... magari spiegati meglio.
    Ino ogni caso il codice che hai pubblicato non funziona di certo, continui a ciclare il RS 3 volte ad ogni ciclo perdendo di vista il Bookmark principale... questo è assurdo.

    Nella sostanza devi lavorare con 2 Recordset Annidati.
    Se ad essere il criterio principale è il C.F. allora devi estrarre una prima Query Raggruppata o in DISTINCTROW per C.F. nel primo RS Esterno in sola lettura, poi apri un RS interno, in Scrittura, in cui imponi il Criterio del C.F., e solo in quello vai a ciclare i dati guardando la Data...

    Vedi tu.
    OK grazie.

    Esaustivo come sempre, ci proverò
    Ultima modifica di Found; 08-02-2021 13:24 

  10. #10
    Found non è in linea Novello
    Post
    9
    Like Inviati  
    0
    Like Ricevuti  
    0
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Nella sostanza devi lavorare con 2 Recordset Annidati.
    Se ad essere il criterio principale è il C.F. allora devi estrarre una prima Query Raggruppata o in DISTINCTROW per C.F. nel primo RS Esterno in sola lettura, poi apri un RS interno, in Scrittura, in cui imponi il Criterio del C.F., e solo in quello vai a ciclare i dati guardando la Data...

    Vedi tu.
    Fatto! Esattamente come hai suggerito.

    A questo punto si manifesta il problema della velocità ....
    Tab1 ha 22000 codici fiscali (distinctrow)
    Tab2 ha 55000 associazioni

    In pratica avendone - in una ora - sistemati 8000 (tab2), significa attendere una elaborazione di 7 ore!

    C’è qualche altra soluzione che possa ridurre questo tempo?

    Nota: pensando di accelerare ho ordinato in ordine crescente i CF di entrambe le tabelle
    ed aggiunto questa riga all’RS interno:
    If ps!CodFisc <> rs!CodFisc then exit do

    dopo la riga ps.movenext

    Però in questo modo non si avvia neppure.

    Per cui al momento sta lavorando , nella speranza di trovare un’alternativa prima delle 7 ore.
    Ultima modifica di Found; 09-02-2021 07:24 

+ Rispondi al messaggio
Pagina 1 di 2 12 ultimoultimo

Potrebbero interessarti anche ...

  1. Campi Vuoti
    Da leondoro nel forum Microsoft Access
    Risposte: 14
    Ultimo Post: 10-11-2015, 14:18
  2. Cerca campi vuoti
    Da Archimed3 nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 04-05-2013, 13:56
  3. Riempire campi pagine Web
    Da panatronic nel forum Visual Basic .Net
    Risposte: 1
    Ultimo Post: 12-01-2010, 02:05
  4. riempire variabili da campi di un solo record
    Da panatronic nel forum Visual Basic .Net
    Risposte: 16
    Ultimo Post: 15-05-2008, 19:28
  5. campi vuoti
    Da marinaio nel forum Visual Basic 6
    Risposte: 7
    Ultimo Post: 13-06-2005, 12:31