Newsgroup: it.comp.lang.visual-basic
Titolo: [?] database e control array

Scusassero se rompo sempre
dai miei studi, per altro poco approfonditi (c'è di mezzo l'università ed è
periodo d'esami) ho capito che è sempre meglio utilizzare i control arrays
(matrici di controlli?) perchè così si utilizzano meno risorse di sistema.
Giusto?
Bene, ora nel mio form ho due controlli data
1 per accedere al database e effettuare le ricerche, e uno per mostrare il
contenuto della prima colonna della tabella in una dblist.
se io li chiamo data1(0) e data1(1), poi mi da errore qui:
Private Sub Data1(0)_Validate(Action As Integer, Save As Integer)
    Dim Risposta As Integer
    If Save = True Then
        'E' stato modificato un contatto.
        Risposta = MsgBox("Salvare le modifiche apportate?", vbQuestion +
vbYesNo, Me.Caption)
        If Risposta = vbNo Then
            'Se si seleziona no, annulla le modifiche.
            'Per questo, la proprietà DataChanged delle TextBox viene
impostata su False.
            Text2(0).DataChanged = False
            Text2(1).DataChanged = False
            Text2(2).DataChanged = False
            Text2(4).DataChanged = False
            Text2(5).DataChanged = False
        End If
    End If
    'Nasconde il pulsante "Salva".
    salva.Visible = False
    aggiungi.Caption = "Aggiungi"
    modifica.Caption = "Modifica"
End Sub
qualcuno sa spiegarmi perchè?

 Private Sub Data1(0)_Validate(Action As Integer, Save As Integer)
Sei sicuro che ci sia quello "0" tra parentesi? Dovrebbe essere 
piuttosto una dichiarazione del tipo
Private Sub Data1_Validate(Index as integer, Action As Integer, Save As 
Integer)
e poi all'interno della routine fai una select case, o un if
select case index
case 0 'primo controllo data
case 1 'secondo controllo data
.
.
.
end select
-- 
 __   __  ___   
|  | |  |/ __|  
|  |_|  |\__ \  ICQ #73176037 #162857023
|____|__||___/ 

 Private Sub Data1(0)_Validate(Action As Integer, Save As Integer)
in realta' non hai creato una matrice di controlli ma hai semplicemente dato
due nomi diversi a due controlli data.
Per creare una matrice dovresti settare la proprieta' name dei due i
controlli come "data1", quindi impostare le rispettive proprieta' index a 0
ed 1.
A questo punto la dichiarazione dell'evento validate sara':
Private Sub Data1_Validate(Index as Integer, Action As Integer, Save As
Integer)
dove Index fa riferimento all'indice della matrice data1. Poi tramite una
struttura di controllo if o select all'interno della sub stabilisci quali
operazioni svolgere in base all'oggetto che ha il focus.
Per quanto riguarda l'errore cerca di essere piu' preciso, su che
istruzione? quale messaggio? quale piattaforma, database, so?
beppe

 istruzione? quale messaggio?
leggi sopra
quale piattaforma, database, so?
windows 2k, visual basic 6.0 enterprise, access 2000 (default type : use
jet)
Sono stato sufficientemente chiaro? in caso contrario portate pazienza, sono
newbye!!!

 perchč?
Se per errore al load intendi nella funzione Form_load dovresti postare
anche quella parte di codice...
Di solito un errore di quel genere č dovuto alle "Ricorsioni selvagge": una
routine o function che richiama sč stessa in un loop infinito (ovviamente
per un errore del codice....)
Salutoni
Sergio

 perchč?
oltre a quanto detto da Sergio, lanciando il progetto in modalita' debugger,
vedi esattamente su quale riga d'istruzione viene generato l'errore.
Per quanto riguarda la spiegazione degli errori trovi esaurienti spiegazioni
nell'help in linea alla voce errori intercettabili o errori di run-time o
similari.
beppe

 ha scritto nel messaggio
news:aln0s8$1rq9n6$1...@ID-96007.news.dfncis.de...


 č a questa che corrisponde quell'out of stack memory
sparo nel mucchio, quando colleghi l'oggetto data al recordset generi
l'evento reposition che contiene la chiamata al metodo refresh che genera
l'evento reposition che ... ... ... <spazio della memoria esaurito>.
Io utilizzerei l'evento validate dove posso fare un controllo sull'azione
che ha generato l'evento.
beppe