Visualizzazione dei risultati da 1 a 5 su 5
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354

    [VB6] Mi scorre solo due record del DataBase e salvare in 2tabele differenti i valori

    Aiutatemi a risolvere questo problemino.
    Ho creato un form:



    e ho scritto questo codice:

    codice:
    Option Explicit
    'Vengono dichiarate le costanti per gestire i pulsanti di comando
    Const CPRECEDENTE = 1
    Const CPROSSIMO = 0
    
    Private cnOrdine As ADODB.Connection 'Oggetto Connection per la connessione al database
    Private rsOrdine As ADODB.Recordset 'Oggetto Recordset per l'insieme di record dei programmatori
    
    Private Sub cmdAzione_Click(Index As Integer)
    Set cnOrdine = New ADODB.Connection
    Set rsOrdine = New ADODB.Recordset
    'Viene creata la connessione al DataBase MDB
    cnOrdine.CursorLocation = adUseServer
    cnOrdine.Open "Provider=Microsoft.Jet.OLEDB.3.51;Data Source=g:\DB_1.mdb"
    'Vengono istanziati gli oggetti ADO Connection e Recordset
    rsOrdine.CursorLocation = adUseServer
    rsOrdine.Open "SELECT * FROM TraviLamellari", cnOrdine, adOpenKeyset, _
    adLockOptimistic, adCmdText
    'A seconda del bottone premuto viene eseguita l'azione adeguata
    With rsOrdine
        Select Case Index
            Case CPRECEDENTE 'Va sul record precedente
            .MovePrevious
            'Se si è a BOF (Begin Of File) si torna sul primo record
            If .BOF Then .MoveFirst
            
            Case CPROSSIMO
            .MoveNext
            'Se si è a EOF (End Of File) si torna sull'ultimo record
            If .EOF Then .MoveLast
                            
        End Select
    End With
    LeggiDalDb
    End Sub
    
    Private Sub LeggiDalDb()
    txtNominativo = rsOrdine.Fields(0)
    txtBase = rsOrdine.Fields(1)
    txtAltezza = rsOrdine.Fields(2)
    txtLunghezza = rsOrdine.Fields(3)
    txtQuantità_d = rsOrdine.Fields(4)
    End Sub
    
    Private Sub txtQuantità_o_Change()
    txtQuantità_r = txtQuantità_d - txtQuantità_o
    End Sub
    
    Private Sub cmd_esci_Click()
    frm_bolla.Show
    Unload Me
    End Sub
    Ora, teoricamente (almeno secondo me), premendo sui comandi "Precedente/Prossimo" mi dovrebbe scorrere i record della tabella associata...invece, avviene che mi fa vedere solo i primi due record. Come mai?

    Una volta risolto questo problema, come faccio a salvare, premendo il comando "Ordina", in una seconda tabella gli stessi valori (nominativo trave, base, altezza, lunghezza) e il valore "Quantità Ordine" e modificara allo stesso tempo i dati originali della tabella "TraviLamellari" (quella che scorro con i comandi "precedente/prossimo"), con gli stessi valori (nominativo trave, base, altezza, lunghezza) e con il valore "Quantità Rimanente"?

    Nel form l'unico campo Text modificabile è quello della "Quantità Ordine".

    Fino a qui ci sono arrivato bene o male...ma ora non trovo la soluzione...

  2. #2

    Re: [VB6] Mi scorre solo due record del DataBase e salvare in 2tabele differenti i valori

    [B]
    With rsOrdine
    Select Case Index
    Case CPRECEDENTE 'Va sul record precedente
    .MovePrevious
    'Se si è a BOF (Begin Of File) si torna sul primo record
    If .BOF Then .MoveFirst

    Case CPROSSIMO
    .MoveNext
    'Se si è a EOF (End Of File) si torna sull'ultimo record
    If .EOF Then .MoveLast

    End Select
    End With
    Prova ad invertire le due istruzioni:
    codice:
    With rsOrdine
        Select Case Index
            Case CPRECEDENTE 'Va sul record precedente
            If .BOF Then .MoveFirst
            .MovePrevious
    
            Case CPROSSIMO
            If .EOF Then .MoveLast
            .MoveNext
                            
        End Select
    End With

  3. #3
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    MdE2005 ha dimenticato i Not...:

    codice:
    With rsOrdine
        Select Case Index
            Case CPRECEDENTE 'Va sul record precedente
               If Not .BOF Then
                  .MovePrevious
               End If
               If .BOF Then
                  .MoveFirst
               End If
            Case CPROSSIMO
               If Not .EOF Then
                  .MoveNext
               End If
               If .EOF Then
                  .MoveLast
               End If
        End Select
    End With

    Inoltre per la connection non utilizzerei 3.51 ma la 4.0 perchè potrebbe darti l'errore "formato data base non riconosciuto":

    codice:
    cnOrdine.Open "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=g:\DB_1.mdb;Persist Security Info=False"
    ..e utilizzerei il cursore lato client
    codice:
    rsOrdine.CursorLocation = adUseClient
    Ciao

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    354
    grazie, effettivamente avevo invertito i fattori...

    grazie ancora, anche per la dritta sulla versione...

    una cosa:

    codice:
    Persist Security Info=False
    cosa significa?

  5. #5
    Utente di HTML.it
    Registrato dal
    Sep 2005
    Messaggi
    357
    Trovi una risposta al tuo quesito in questo articolo di MSDN che va bene anche per vb6.

    http://msdn.microsoft.com/library/de...onnections.asp

Permessi di invio

  • Non puoi inserire discussioni
  • Non puoi inserire repliche
  • Non puoi inserire allegati
  • Non puoi modificare i tuoi messaggi
  •  
Powered by vBulletin® Version 4.2.1
Copyright © 2024 vBulletin Solutions, Inc. All rights reserved.