Newsgroup: it.comp.appl.access
Titolo: Dove sbaglio?

Il debug del seguente script mi da come errore "Loop senza Do", non 
riesco a capire dov'è che si interrompe il ciclo...
Qualcuno mi può aiutare?
Function pianifica()
'clicca qui e premi play
Dim linea_1 As Recordset
Dim linea_2 As Recordset
Dim linea_3 As Recordset
Dim query_ordini As Recordset
Dim Max1, Max2, Max3 As Date
Dim Start As Date
Set linea_1 = CurrentDb.OpenRecordset("Q_Linea1")
Set linea_2 = CurrentDb.OpenRecordset("Q_Linea2")
Set linea_3 = CurrentDb.OpenRecordset("Q_Linea3")
Set query_ordini = CurrentDb.OpenRecordset("Q_Ordini")
Start = Nz(DMax("StartDate", "Tb_StartDate"))
query_ordini.MoveLast
query_ordini.MoveFirst
     Do Until query_ordini.EOF
         Max1 = Nz(DMax("Data_Stoccaggio", "Ordini", "[Linea]= 1"))
         Max2 = Nz(DMax("Data_Stoccaggio", "Ordini", "[Linea]= 2"))
         Max3 = Nz(DMax("Data_Stoccaggio", "Ordini", "[Linea]= 3"))
         If Max1 = 0 And Max2 = 0 And Max3 = 0 Then
             query_ordini.Edit
             query_ordini![Linea] = 1
             query_ordini![Data_Stocaggio] = Start
         Else
         If Max1 > 0 And Max2 = 0 And Max3 = 0 Then
             query_ordini.Edit
             query_ordini![Linea] = 2
             query_ordini![Data_Stoccaggio] = Start
         Else
         If Max1 > 0 And Max2 > 0 And Max3 = 0 Then
             query_ordini.Edit
             query_ordini![Linea] = 3
             query_ordini![Data_Stoccaggio] = Start
         End If
         If Max1 <= Max2 And Max1 <= Max2 Then
             query_ordini.Edit
             query_ordini![Linea] = 1
             query_ordini![Data_Montaggio] = Max1 + 1
         Else
         If Max2 <= Max1 And Max2 <= Max3 Then
             query_ordini.Edit
             query_ordini![Linea] = 2
             query_ordini![Data_Montaggio] = Max2 + 1
         Else
         If Max3 <= Max1 And Max3 <= Max2 Then
             query_ordini.Edit
             query_ordini![Linea] = 3
             query_ordini![Data_Montaggio] = Max3 + 1
         End If
         Max1 = 0
         Max2 = 0
         Max3 = 0
         query_ordini.Update
         query_ordini.MoveNext
     Loop
End Function
-- 
Sláinte, Eirinn
icq# 3346238 - 
http://eirinn.altervista.org/
"Per aspera ad astra"

 ha scritto nel messaggio 
news:dqnj8l$nrf$1...@area.cu.mi.it...

a postare un messaggio con un oggetto poco significativo. 

ciroteo ha scritto:
 > a postare un messaggio con un oggetto poco significativo.
Sorry, ora è un po' più specifico...


[CUT]
Controlla la chiusura degli degli "IF", mi pare siano tutti
sbagliati...
Bye


qui apri un if e non lo chiudi più.
il problema è che la chiusura dell'if può essere ritardata se usi
If  .... then
elsif
end if
se invece fai come dici tu
If then
else
if  then
end if
quell'end if vale per il secondo if ma non per il primo.
Perchè non usi
Select case è più ordinato e performante

-- 
_ _
Ciao
MAssimiliano Amendola            
www.accessgroup.it
Cisa - Conferenza Italiana per Sviluppatori Access
Info:  
www.donkarl.com/it

 Sorry, ora è un po' più specifico...
senza offesa eh! era solo un suggerimento ... a cui per dovere di cronaca va 
aggiunto quello relativo al quoting.
che deve avvenire alla fine del messaggio precedente in modo da consentire 
una migliore lettura.
Per quanto riguarda il suggerimento specifico ...quello che ti è stato detto 
mi sembra più che azzeccato.


 >> End Function
--
rgrds
SC
-- 
questo articolo e` stato inviato via web dal servizio gratuito 
http://www.newsland.it/news
 segnala gli abusi ad 
ab...@newsland.it

 Select case è più ordinato e performante
Ma in che modo?
Il select case posso farlo su una sola variabile, se non sbaglio, mentre 
qui ne devo confrontare 3.

-- 


 qui ne devo confrontare 3.
Prova cosě:
**********
Dim blA As Boolean
Dim blB As Boolean
Dim blC As Boolean
 If (Testo0 > 0 And Testo2 > 0 And Testo4 > 0) Then blA = True
 If (Testo0 < 0 And Testo2 < 0 And Testo4 < 0) Then blB = True
 If (Testo0 > 0 And Testo2 < 0 And Testo4 < 0) Then blC = True
Select Case blA Or blB Or blC
Case blA
MsgBox "Tutti >0"
Case blB
MsgBox "Tutti < 0"
Case blC
MsgBox "Uno solo >0"
********

--


 ********
Arichhite...
End select

-- 


 End select
Ed infatti... DEBUG
"Errore di compilazione"
"Select Case senza End Select"
:-)))

-- 
questo articolo e` stato inviato via web dal servizio gratuito 


 ********
Ancora meglio:
Dim intA As Integer
If (Testo0 > 0 And Testo2 > 0 And Testo4 > 0) Then intA = 1
If (Testo0 < 0 And Testo2 < 0 And Testo4 < 0) Then intA = 2
If (Testo0 > 0 And Testo2 < 0 And Testo4 < 0) Then intA = 3
Select Case intA 
Case 1
MsgBox "Tutti >0"
Case 2
MsgBox "Tutti < 0"
Case 3
MsgBox "Uno solo >0"
End Select
