Visualizzazione dei risultati da 1 a 8 su 8
  1. #1

    -=) Visual Basic (=- Quando seleziono...

    allora... ho un listbox il cui contenuto è un rs di un database. Voglio fare in modo ke appena si seleziona una voce (caratterizzata da Cognome e Nome) escano i dati relativi all'utente...
    A livello di codice... sono messo così:

    codice:
    Option Explicit
    
    Private DB As Database
    Private RS As Recordset
    
    Private Sub Visualizza()
        If RS!Rs_Nome <> "" Then
            txt_nome.Text = RS!Rs_Nome
        Else
            txt_nome.Text = ""
        End If
        If RS!Rs_cognome <> "" Then
            txt_cognome.Text = RS!Rs_cognome
        Else
            txt_cognome.Text = ""
        End If
        If RS!Rs_indirizzo <> "" Then
            txt_indirizzo.Text = RS!Rs_indirizzo
        Else
            txt_indirizzo.Text = ""
        End If
        If RS!Rs_email <> "" Then
            txt_email.Text = RS!Rs_email
        Else
            txt_email.Text = ""
        End If
        If RS!Rs_sito <> "" Then
            txt_sito.Text = RS!Rs_sito
        Else
            txt_sito.Text = ""
        End If
        If RS!Rs_icq <> "" Then
            txt_icq.Text = RS!Rs_icq
        Else
            txt_icq.Text = ""
        End If
        If RS!Rs_nick <> "" Then
            txt_nick.Text = RS!Rs_nick
        Else
            txt_nick.Text = ""
        End If
        If RS!Rs_telcasa <> "" Then
            txt_ncasa.Text = RS!Rs_telcasa
        Else
            txt_ncasa.Text = ""
        End If
        If RS!Rs_teluff <> "" Then
            txt_nuff.Text = RS!Rs_teluff
        Else
            txt_nuff.Text = ""
        End If
        If RS!Rs_fax <> "" Then
            txt_nfax.Text = RS!Rs_fax
        Else
            txt_nfax.Text = ""
        End If
        If RS!Rs_cell1 <> "" Then
            txt_ncell1.Text = RS!Rs_cell1
        Else
            txt_ncell1.Text = ""
        End If
        If RS!Rs_cell2 <> "" Then
            txt_ncell2.Text = RS!Rs_cell2
        Else
            txt_ncell2.Text = ""
        End If
        If RS!Rs_altro <> "" Then
            txt_altro.Text = RS!Rs_altro
        Else
            txt_altro.Text = ""
        End If
    End Sub
    
    Private Sub ApriRecordSet(Filtro As String)
        Dim Gira As Integer
        
        Set RS = DB.OpenRecordset(Filtro)
        txt_user.Clear
        RS.MoveFirst
        For Gira = 1 To RS.RecordCount
                    txt_user.AddItem RS!Rs_cognome & " " & RS!Rs_Nome
                RS.MoveNext
        Next Gira
    End Sub
    
    Private Sub Command5_Click()
        End
    End Sub
    
    Private Sub Form_Load()
        Set DB = OpenDatabase(App.Path & "\db97.mdb")
        ApriRecordSet ("SELECT * FROM tbl_dati ORDER BY Rs_Cognome,Rs_Nome ASC")
    End Sub
    
    Private Sub mnu_esci_Click()
        End
    End Sub
    Nota di moderazione: ho aggiunto i tag CODE (vedere regolamento).
    ... :master: riconosco l'esistenza di un limite a tutto , ma non l'accetto ...

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2002
    Messaggi
    327
    La lista di nomi che hai hanno un id nel database?

    Nel senso che potresti caricare la listbox con nome e cognome e tipo 200 spazi e poi l'id, in modo che non sia visibile nella lista.

    All'evento click della listbox leggi l'id relativo alla riga cliccata e vai sul database.

    Sono stato chiaro?

  3. #3

    chiarissimo..

    sisi.. chiarissimo... ma l'id come lo prendo?
    ... :master: riconosco l'esistenza di un limite a tutto , ma non l'accetto ...

  4. #4
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    Molti oggetti hanno un elenco non visibile
    dove si possono memorizzare valori interi (come ad esempio gli id
    di un contatore) detto itemdata.
    Quindi ad ogni elemento della lista o combo ecc. si può associare
    un numero intero cosicchè selezionando una voce nella lista
    si seleziona anche questo valore oltre che a quello già visibile.
    Ne consegue che in una select ad esempio la clausola
    where si può così implementere:
    where lstPippo.itemData(lstPippo.listinsex) cosicchè
    verrà preso il valore dell'id (univoco) dell'elemento
    selezionato.
    Naturalmente gli itemdata vengono caricati con il relativo metodo
    mentre carichi la list ocombo chessia.

    ---Assolutamente NO il sistema suggerito dall'amico di prima.----

    Ti ho detto quasi tutto,provaci un pò e se hai problemi ti mando il codice comleto.
    Ciao.

  5. #5
    opss.. mi ero dimenticato d dire ke avevo risolto ** tnx ugualmente

    ho utilizzato SPLIT x separare i dati
    ... :master: riconosco l'esistenza di un limite a tutto , ma non l'accetto ...

  6. #6
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    Fai come vuoi ma non è certo il modo migliore.
    Ti consiglio di studiartelo l'itemdata se non lo hai mai
    utilizzato perchè ricavare l'id estraendolo da una stringa intera
    è molto pericoloso
    anche se ne sei sicuro e molto poco da programmatore.
    Questa naturalmente è la mia opinione quindi non prenderla come
    una critica ma solo come sincero consiglio.
    Sono le piccole cose che differenziano uno schiaccia bottoni da un
    programmatore.
    Ciao.

  7. #7

    mmm....

    poco sicuro? spiegati meglio per piacere!



    P.S. tranky.. capisco ke è solo un consiglio ;*
    ... :master: riconosco l'esistenza di un limite a tutto , ma non l'accetto ...

  8. #8
    Utente di HTML.it
    Registrato dal
    Jan 2003
    Messaggi
    118
    Se arriva doppio ignoralo.(avevo già scritto una mail ma si è persa
    nell'oblio dei bytes. Te ne mando un riassunto.)

    Pericoloso forse non è la parola più adatta.
    Quando si scrive codice bisognerebbe rifarsi ad uno dei paradigmi
    della programmazione ad oggetti cioè
    "l'astrazione".
    Cioè scrivere cidice che debba essere più possibile riciclabile.


    Ti scrivo il codice che utilizzerei per caricare una combo o una lista.
    Public Sub CaricaLista(Db As ADODB.Connection, _
    Sql As String, Lista As Object)
    Dim Rst As New ADODB.Recordset
    Dim I As Integer

    Rst.Open Sql, Db
    Do While Not Rst.EOF
    Lista.AddItem Rst(campo con nominativo).Value
    Lista.ItemData(Lista.NewIndex) = Rst(campo con id).Value
    Rst.MoveNext
    Loop
    Rst.Close
    End Sub

    Creano un modulo el quale inserisci il codice di caricamento combo
    poi puoi richiamarlo sempre e puoi asportarlo e utilizzarlo in tutti i tuoi progetti.
    es se l'istanza del modulo la chiami pippo
    scrivrai:
    pippo.caricalista connessione,sql,nome combo (o lista)


    Va be...scusa se ti ho rott un po ma sono un 'vecchio' pignolo.

    Ciao.

    p.sp. Per ogni delucidazione.......

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.