Acquista i nostri libri consigliati su Amazon.it
+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 9 su 9

RecordSet Disconnesso con DAO possibile ?

  1. #1
    L'avatar di nman
    nman non  in linea Scribacchino
    Vorrei sostituire una tabella temporenea ( che non mi piace )
    con un RecordSet disconnesso.

    Sono gia arrivato a un discreto risultato con l'aiuto della rete
    e con tante prove

    __ ( questa ridotta all'osso la parte incriminata )
    Private Sub Comando8_Click()
    
    ' Su Access 2013 aggiunto riferimento --- >  Microsoft ActiveX Data Objects 2.5 library
    '       Necessaria una maschera in visualizzazione "Maschere continue"
    '          Pulsante di comando di nome  "Comando8"
    '          Caselle di testo di nome "tx01",  "tx02",  "tx03"
    
    ' __ 1) __ Creo un RecordSet ADO Disconnesso ________________________________________
    'Dim Con As ADODB.Connection
    Dim RsA As ADODB.Recordset
    'Set Con = CurrentProject.Connection
    Set RsA = New ADODB.Recordset
       
        RsA.Fields.Append "RsA01", adInteger, , adFldIsNullable
        RsA.Fields.Append "RsA02", adDate, , adFldIsNullable
        RsA.Fields.Append "RsA03", adVarChar, 255, adFldIsNullable
       
        RsA.Open , , adOpenDynamic, adLockOptimistic
        
    ' __ 2) __ Aggiungo un record di esempio nel RecordSet _____________________________
        RsA.AddNew
            RsA.Fields("RsA01") = 7
            RsA.Fields("RsA02") = Now()
            RsA.Fields("RsA03") = "wefgerip"
    
    ' __ 3) __ Devo uscire dall'ultimo record di RsA inserito __________________________
    '    RsA.Sort = "RsA01 ASC"
        RsA.MoveFirst
        
    ' __ 4) __ Visualizzo in maschera il risultato ____________________________________
        Set Me.Recordset = RsA
            Me.tx01.ControlSource = "RsA01"
            Me.tx02.ControlSource = "RsA02"
            Me.tx03.ControlSource = "RsA03"
        
    ' __ 5) __ Chiudo ADO ____________________________________________________________
        RsA.Close
        Set RsA = Nothing
        'Con.Close
        'Set Con = Nothing
       
    End Sub
    
    Ora vorrei riuscire a fare la stessa cosa usando DAO
    in quanto nello stesso Modulo ho altri RecordSet DAO

    ____ E' possibile ??? ( temo gia di sapere la risposta )
    ____ Se non possibile posso migliorare il codice sopra scritto ???


    Fonti
    http://forum.masterdrive.it/microsof...memoria-48877/
    ADO - DAO - Esempio 1


    Grazie
    .

  2. #2
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Non possibile, DAO non lo consente.
    ℹ️ Leggi di pi su @Alex ...

  3. #3
    L'avatar di nman
    nman non  in linea Scribacchino
    Lo sospettavo

    Comunque ti ringrazio per la conferma



    .

  4. #4
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Se la quantit di dati non esorbitante puoi usare un array bidimensionale.
    ℹ️ Leggi di pi su Brontolo ...

  5. #5
    L'avatar di nman
    nman non  in linea Scribacchino
    Interessante,

    Il problema che io non sono un "informatico" e conosco l'array
    solo perche ne ho letto qualche volta il nome.

    Intendi qualcosa di simile a questo ?
    Private Sub Comando8_Click()
    
    Dim A01(5) As String
    Dim A02(5) As String
    Dim A03(5) As String
    
    Dim x As Integer
    Dim Res As String
    
        For x = 0 To 5
            A01(x) = "wwA01" & x
            A02(x) = "wwA02" & x
            A03(x) = "wwA03" & x
            Res = Res & A01(x) & "    " & A02(x) & "    " & A03(x) & vbCrLf
        Next x
    
    Debug.Print Res
    
    ' Adesso in qualche modo la stringa "Res" che  un insieme ordinato e incolonnato
    ' di dati deve diventare la origine dati della mia maschera ????
    
    End Sub
    
    da cui alla finestra immediata ottengo questo
    wwA010    wwA020    wwA030
    wwA011    wwA021    wwA031
    wwA012    wwA022    wwA032
    wwA013    wwA023    wwA033
    wwA014    wwA024    wwA034
    wwA015    wwA025    wwA035
    
    
    ? A02(3)
    wwA023
    
    Ma poi quella stringa "Res" deve diventare la origine dati della mia maschera
    generandomi 6 record e 3 colonne

    e questo non saprei come farlo ( in questo momento ).


    Per il momento ringrazio per l'imput



    Buona notte

    .
    Ultima modifica di nman; 15-01-2013 02:39 

  6. #6
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Il suggerimento di [Brontolo] corretto nel contesto del fatto che non hai detto a cosa serviva...!
    Ora che hai aggiunto che questo deve essere associabile ad un'oggetto DataBound... rimane evidente che la soluzione non praticabile.

    Non capisco perch non vuoi usare ADO... una soluzione ottima...!
    ℹ️ Leggi di pi su @Alex ...

  7. #7
    L'avatar di Brontolo
    Brontolo non  in linea Very Important Person
    Quote Originariamente inviato da @Alex Visualizza il messaggio
    Ora che hai aggiunto che questo deve essere associabile ad un'oggetto DataBound... rimane evidente che la soluzione non praticabile.
    Eh s, purtroppo.

    Comunque la soluzione array, che potrebbe servirti un'altra volta, avrebbe potuto essere:
    Dim A01(5, 3) As String
    Dim x As Integer, y As Integer
    
        For x = 0 To 5
            For y = 0 To 3
               A01(x, y) = "wwA01" & x & y
               ...
            Next y
        Next x
    
    ℹ️ Leggi di pi su Brontolo ...

  8. #8
    L'avatar di nman
    nman non  in linea Scribacchino
    Si dovevo essere piu chiaro all'inizio.

    In compenso ho imparato ( spero ) ad usare anche gli Array

    Non tutto il male vien per nuocere


    Grazie

    .

  9. #9
    L'avatar di @Alex
    @Alex non  in linea Moderatore Globale
    Quote Originariamente inviato da nman Visualizza il messaggio
    Si dovevo essere piu chiaro all'inizio.

    In compenso ho imparato ( spero ) ad usare anche gli Array

    Non tutto il male vien per nuocere


    Grazie
    A titolo di ampliamento visione, oltre agli Array ci sono le Collection di Classi, che consentono un'indicizzazione diversa e per alcuni aspetti, o meglio in alcuni casi specifici, potrebbe essere meglio di un'array...
    Ad esempio se vuoi verificare se un'Item doppio, nell'array devi ciclarli tutti... nella Collection basta cercare la Key corrispondente al campo che rappresenta la Key di archiviazione della classe...

    Sono stato veramente poco chiaro... lo so... ma pi semplice di quanto sembra.

    Esempio definiamo una Classe [clsItem]
    Option Compare Database
    Option Explicit
    
    Public NomeItem as String
    Public Id_Item as Long
    
    Quindi definiamo una Collection di Classi
    Option Compare Database
    Option Explicit
    
    Private mcolControls As Collection
    
    Public Function Add(Id As Long, Nome as String) As Object
        On Error GoTo Proc_Err
        
        Dim curClass As clsItem
        If Not Exists(Id) Then
            Set curClass = New clsItem
            curClass.Id_Item = Id
            curClass.NomeItem=Nome
            mcolControls.Add curClass, curClass.Id_Item
        Else
            Set curClass = mcolControls(Id)
        End If
        Set Add = curClass
        
    Proc_Exit:
        Exit Function
        
    Proc_Err:
                        
        Resume Proc_Exit
    End Function
    
    Public Function Exists(strKey As String) As Boolean
        On Error Resume Next
        Dim strValue As String
        
        strValue = mcolControls.Item(strKey).Key
        Exists = (Err.Number = 0)
        Err.Clear
    
    End Function
    
    Public Function Item(strKey As String) As Object
        On Error GoTo Proc_Err
        
        If Exists(strKey) Then
            Set Item = mcolControls.Item(strKey)
        End If
        
    Proc_Exit:
        Exit Function
        
    Proc_Err:
        Item = Nothing
    End Function
    
    ecc....
    
    In realt il codice era previsto per una MasterClass_Collection, ovvero una Classe che gestisce le Collection di Classi... ma poco importa... mi pare chiarissimo l'esempio...

    Se apri un RS e ciclandolo passi al Metodo o Funzione ADD Nome e ID, ottieni che riempirai la Collection di CLASSI strutturate in modo da contenere i 2 dati...
    Ad ogni inserimento come vedi la verifica dell'esistenza viene fatto testando la KEY che costituirta dall'ID che poi la PK... ecc...

    Un p di fantasia poi il resto...

    Ovviamente diverso che usare Array, gli array sono per molti aspetti migliori in quanto molto veloci, ma non sempre sono la migliore soluzione...
    Da qu ti accorgi
    Ultima modifica di @Alex; 15-01-2013 13:29 
    ℹ️ Leggi di pi su @Alex ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. Operazione pianificata con utente disconnesso
    Da Brontolo nel forum Microsoft Windows
    Risposte: 16
    Ultimo Post: 11-10-2020, 16:30
  2. Risposte: 3
    Ultimo Post: 25-09-2020, 22:27
  3. Scheda di rete: stato supporto... supporto disconnesso (falso)
    Da Andrea Visca nel forum Networking e sicurezza
    Risposte: 9
    Ultimo Post: 30-01-2013, 23:29
  4. [RETE] Supporto disconnesso
    Da marco.santilli nel forum Networking e sicurezza
    Risposte: 5
    Ultimo Post: 07-01-2010, 11:56
  5. Recordset virtuali...possibile?
    Da elios81 nel forum Visual Basic 6
    Risposte: 6
    Ultimo Post: 08-10-2004, 20:11