Newsgroup: it.comp.appl.access
Titolo: funzione di inserimento automatico in db

Salve a tutti.
ho un problema con una funzione: in pratica ho costruito una maschera
che mi inserisce automaticamente dei record in funzione di alcuni
parametri settati dall'operatore. ad esempio
Data inizio (testo)
Data fine (testo)
Disciplina (testo)
Orario (matrice di testo)
Salta giorni (matrice di testo)
giorno della settimana (matrice di testo)
in pratica devo eseguire questa funzione per ciclare ogni singolo
giorno che va dalla data di inizio alla data di fine, verificare se il
giorno non sia compreso nella matrice salta giorni, verificare che il
giorno sia uno di quelli della matrice giorno della settimana. Infine
ciclare per tutti gli orari della matrice orario per inserire nel db il
valore. Ecco la funzione che ho realizzato:
dataDaInserire = CDate(Me.dataInizio)
gg = DateDiff("d", Me.dataInizio, Me.dataFine)
Dim xxx As String
Dim a As Variant
Dim skip() As String
skip = Split(Me.saltaGIorni, ";")
Dim giorniSettimana As String
Dim skipday() As String
Dim daStampare As String
For Each a In Me.Elenco15.ItemsSelected
    giorniSettimana = giorniSettimana & ";" & Me.Elenco15.ItemData(a)
Next
skipday= Split(giorniSettimana, ";")
For I = 0 To gg
    For Y = 0 To UBound(skip)
        If day(dataDaInserire)= skip(Y) Then
            'salta
        Else
            For Z = 1 To UBound(skipday)
                If skipday(Z) = Weekday(dataDaInserire)Then
                    For O = 0 To UBound(hh)
                     '  inserimento
                    Next O
                End If
            Next Z
        End If
    Next Y
    dataDaInserire = DateAdd("d", 1, dataDaInserire)
Next I
il problema si pone quando la matrice skipday contiene piu di un
valore..Sicuramente la routine è stata progettata male. Chi mi può
aiutare?
Grazie

 giorno non sia compreso nella matrice salta giorni, verificare che il
             'salta

Il problema è qui
For Y = 0 To UBound(skip)
        -> If day(dataDaInserire)= skip(Y) Then <-
            'salta
        Else
ecc
in realtà il valore day(dataDaInserire) deve essere uguale a uno dei
possibili valori della matrice, quindi utilizzando un OR logico
Il fatto è..come faccio a stabilire a priori l'if e il relativo OR?
potrei fare un select case e per ogni indice della matrice fare un if
differente..però vorrei cercare di realizzare qualcosa di piu
raffinato..
Anche perchè a priori non so quanti giorni devo "skippare"...
Idee??

> Next I
[cut]
s.e. & o.
-- 
ac
y-1=x

Alessandro Cara ha scritto:

Ciao, grazie della risposta. Su tuo suggerimento ho strutturato la
routine così
Dim gg As Integer
Dim dataDaInserire As Date
gg = DateDiff("d", Me.dataInizio, Me.dataFine)
dataDaInserire = CDate(Me.dataInizio)
 For I = 0 To gg
     If InStr(Elenco15.Column(2), ";" & Weekday(dataDaInserire) & ";" =
0) And InStr(saltaGIorni, ";" & day(dataDaInserire) & ";" = 0) Then
        For O = 0 To UBound(hh)
            Debug.Print hh(O) & " - " & dataDaInserire
       Next O
    End If
    dataDaInserire = DateAdd("d", 1, dataDaInserire)
Next I
molto + semplice sicuramente. Però non funziona perchè la condizione
è vera se trova SIA il giorno della settimana SIA il giorno da
"skippare".. invece dovrebbe trovare il giorno della settimana ed
evitare quello da saltare..forse è meglio usare due if?
Cmq grazie ancora dell'aiuto

piocanet ha scritto:

Risolto così
Dim gg As Integer
Dim hh() As String
Dim dataDaInserire As Date
If Not IsNull(Me.orario) Then
    hh = Split(Me.orario, ";")
Else
    hh(0) = ""
End If
For Each A In Me.Elenco15.ItemsSelected
    giorniSettimana = giorniSettimana & ";" & Me.Elenco15.ItemData(A)
Next
gg = DateDiff("d", Me.dataInizio, Me.dataFine)
dataDaInserire = CDate(Me.dataInizio)
 For I = 0 To gg
     If InStr(giorniSettimana, Weekday(dataDaInserire)) <> 0 Then
        If InStr(saltaGIorni, day(dataDaInserire)) = 0 Or
IsNull(saltaGIorni) Then
            For O = 0 To UBound(hh)
               'inserimento
            Next O
        End If
    End If
    dataDaInserire = DateAdd("d", 1, dataDaInserire)
Next I
grazie davvero x l'aiuto..