Newsgroup: it.comp.appl.access
Titolo: La Ricorsione funziona ed e' VELOCISSIMA !: Eccovi il codice :

Una BOMBA, velocissima e non si sbaglia eh !
presuppone l' esistenza di 2 tabelle :
una dei collegamenti e una dei risultati (quest' ultima da
svuotare prima di far partire la ricerca). Il nome dei campi
si evincono dal contesto.
Vi posto tutto, dovesse (non si sa mai) servire a qualcuno :
In un tasto di una maschera scrivete :
Private Sub Comando0_Click()
  Dim k As String
  Dim collegamenti As String
  Dim b As Boolean
  k = "1": collegamenti = "collegamenti"
  ' k e' la kiave INIZIALE
  G_CNN_Client.Open G_Stringa_CNN_Client
        b = ESPLORA(k, collegamenti, "")
  G_CNN_Client.Close
  MsgBox ("fatto !")
End Sub
' funzione principale
'=============================================
Public Function ESPLORA(ByRef Kiave As String, ByRef C_Nome As String,
ByRef Nome_Routine As String) As Boolean
'On Error GoTo G_E
' ------- dichiarazioni variabili
-------------------------------------------------------------
Err.Clear
Dim L     As Long
Dim C     As New ADODB.Recordset
L = Len(Nome_Routine)
Nome_Routine = Nome_Routine & "ESPLORA:"
' ------- inizializzazione variabili
----------------------------------------------------------
C.Open "select * from " & C_Nome & " where gestione_A_kiave_='" &
Kiave & "';", G_CNN_Client
Do While Not C.EOF
   Kiave = C("gestione_b_kiave_").Value
   If Not Kiave_Gia_Segnata(Kiave, Nome_Routine) Then
      If Not Segna_Kiave(Kiave, C, Nome_Routine) Then GoTo G_P
      If Not ESPLORA(Kiave, C_Nome, Nome_Routine) Then GoTo G_P
   End If
   C.MoveNext
Loop
Nome_Routine = Left(Nome_Routine, L)
ESPLORA = True
Exit Function
' ------- fine procedura
----------------------------------------------------------
G_E:
   FUNC_ESCI_ERR Nome_Routine
   Exit Function
G_P:
End Function
'=============================================
Public Function Kiave_Gia_Segnata(ByRef Kiave As String, ByRef
Nome_Routine As String) As Boolean
'On Error GoTo G_E
' ------- dichiarazioni variabili
-------------------------------------------------------------
Err.Clear
Dim L     As Long
Dim R     As New ADODB.Recordset
L = Len(Nome_Routine)
Nome_Routine = Nome_Routine & "Kiave_Gia_Segnata:"
' ------- inizializzazione variabili
----------------------------------------------------------
R.Open "select * from Risultati_Esplorazione where
gestione_a_kiave_='" & Kiave & "';", G_CNN_Client
If R.EOF And R.BOF Then
   Kiave_Gia_Segnata = False
Else
   Kiave_Gia_Segnata = True
End If
Nome_Routine = Left(Nome_Routine, L)
Exit Function
' ------- fine procedura
----------------------------------------------------------
G_E:
   FUNC_ESCI_ERR Nome_Routine
   Exit Function
G_P:
End Function
'=============================================
Public Function Segna_Kiave(ByRef Kiave As String, ByRef C As
ADODB.Recordset, ByRef Nome_Routine As String) As Boolean
'On Error GoTo G_E
' ------- dichiarazioni variabili
-------------------------------------------------------------
Err.Clear
Dim L     As Long
Dim J     As Long
Dim N     As Long
Dim R     As New ADODB.Recordset
L = Len(Nome_Routine)
Nome_Routine = Nome_Routine & "Segna_Kiave:"
' ------- inizializzazione variabili
----------------------------------------------------------
RC_SSC R
R.Open "select * from risultati_Esplorazione where 0;", G_CNN_Client
N = C.Fields.Count - 1
R.AddNew
  For J = 0 To N
      R.Fields(J).Value = C.Fields(J).Value
  Next J
R.Update: R.Close: Set R = Nothing
Nome_Routine = Left(Nome_Routine, L)
Segna_Kiave = True
Exit Function
' ------- fine procedura
----------------------------------------------------------
G_E:
   FUNC_ESCI_ERR Nome_Routine
   Exit Function
G_P:
End Function

Complimenti per il codice
Posso sapere sapere per risolvere quale problema utilizzi del codice 
ricorsivo?
Ciao
RobertoA


del codice ricorsivo?
Gli utenti pazzi hanno a disposizione n tabelle e
possono collegare (e scollegare) un qualunque record
di una di esse con qualunque altro record delle altre
o della tabella stessa, sia in una direzione che nell' altra.
Mi spiego ?  Col rischio certo di creare puntamenti
ciclici.
Peggio che peggio, i collegamenti non sono tutti della
stessa natura : alcuni possono essere (a richiesta) solo
informativi (da A fammi vedere B) altri di dipendenza
funzionale (i record di B sono i "componenti" logici
di un record di A : per esempio in A c'e' la somma degli
importi dei B).
A quel punto se :
- vuoi esplorare le dipendenze a fini reportistici
- oppure devi CANCELLARE un record (!!) ... O fai delle
routine ricorsive o muori gonfio in una pozza di sangue.

 ha scritto nel messaggio 
news:7b2a5668-1dfb-4226...@x42g2000yqx.googlegroups.com...

cos'č questo?
RC_SSC R
se fai un esempio demo che funziona realmente (nel senso STRINGA connessione 
inclusa, Tabelle incluse, dati inclusi, funzione Errori inclusa, ecc...) te 
lo pubblico su Accessgroup...

 lo pubblico su Accessgroup...
A questo punto dammi un percorso e ti ci copio tutta l' applicazione.
Te la regalo. Anche se non la pubblichi, non ti preoccupare.
Non c'e' problema.

 routine ricorsive o muori gonfio in una pozza di sangue.
Magari so' duro io
Non ho ancora capito quale problema risolve la procedura che hai postato 

 Non c'e' problema.
Ci mancherebbe ;)

 Non ho ancora capito quale problema risolve la procedura che hai postato
Quel tipo di procedura risolve fondamentalmente due tipi di problemi: 
gestione dei percorsi e distinta base oltre al calcolo del fattoriale o 
l'analisi di qualsiasi calcolo matematico compreso il metodo babilonese 
di estrazione della radice quadrata.
Quello di radicale e' assimilabile alla distinta base.
Se non ti sovviene la distinta base: il primo link esplicativo che ho 
trovato:
http://www.pc-facile.com/glossario/distinta_base/
(chissà perché usano sempre la bicicletta e fra i componenti non 
inseriscono mai gli sportelli, mah....)
oppure
http://snipurl.com/16zex6
A tempo perso può anche servire a costruire/navigare un B-tree  o fare 
una ricerca dicotomica o fare la scansione di un hard disk.
--
ac

 Manda sulla mia mail...
Ma scherzi ?
e' formata da QUATTRO DB access (di cui due belli
corposi), tutti necessari e per funzionare a dovere deve
essere installata su una particolare struttura di directory.
Facciamo cosi, quando ho tempo produco un modulo
db access minimale e ti mando quello.
Un abbraccio.

che hai postato
Eh la Madonna ... !

 ha scritto nel messaggio 
news:5303a854-9dc7-4974...@i3g2000yql.googlegroups.com...

Eppure è chiarissimo, la ricorsione no?
Antonio 

 Eppure è chiarissimo, la ricorsione no?
:D 

 estrazione della radice quadrata.
si ma noi si vuol vincere il superenalotto cacchio! :D 

 Un abbraccio.
wow :D 

 Eppure è chiarissimo, la ricorsione no?
E che e' la ricorsione ? :D

 AZZ....!!! :D
PALL ... !!! Due a uno per me :D


ci sto pensando
--
ac


la sorella della ritorsione, che è poi la cugina dell'estorsione... il
che non me la conta giusta con sta cosa che stai a fa... ma è
legale ? :D

 ha scritto nel messaggio 
news:1ef529b1-48ba-4e92...@n3g2000yqb.googlegroups.com...


Brigadiere, io non ci voglio entrare eh?
ho risposto a questo signore del partito radicale ma non lo conosco e posso 
dimostrarlo quando vuole
Quindi rigetto ogni addebito!
Bacio le mani....
Antonio