Visualizzazione dei risultati da 1 a 6 su 6
  1. #1
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291

    VB6-Select con WHERE multiplo.

    Dovrei selezionare da un'unica Tbl diversi records che rispondono a più requisiti.
    Mi spiego meglio:
    se fosse un solo requisito farei RSTb.Source = "SELECT ...... FROM TblRegistro WHERE Proponente='" & sNomeRic & "'"
    ove la variabile stringa "sNomeRic" conterrebbe il requisito da selezionare.
    Ora mi trovo ad avere una ListView nella quale è possibile selezionare tramite LvDiff.ListItems(i).Checked = True diversi records, ad esempio: RL05_02; RL03_04, ..... come devo procedere per modificare SELECT ...... FROM TblRegistro WHERE Proponente='" & sNomeRic & "'" .
    Grazie per l'aiuto.
    LM

  2. #2
    Moderatore di Programmazione L'avatar di alka
    Registrato dal
    Oct 2001
    residenza
    Reggio Emilia
    Messaggi
    24,466
    Non so quanto possa essere comodo, ma suppongo basti collegare le condizioni WHERE del campo interessato con una condizione OR.

    Ciao!
    MARCO BREVEGLIERI
    Software and Web Developer, Teacher and Consultant

    Home | Blog | Delphi Podcast | Twitch | Altro...

  3. #3
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Ciao LM

    ti ho preparato una routine di esempio con una ListBox, per semplicità... tanto alla fine il procedimento è lo stesso...

    per provarla, in un form metti una ListBox e un pulsante:

    codice:
    Private Sub Form_Load()
    For K = 0 To 5
        List1.AddItem "Elemento" & K
    Next
    End Sub
    
    Private Sub Command1_Click()
    
    Dim Condizioni() As String
    Dim S As String
    Dim SQL As String
    Dim K As Integer
    
    SQL = "SELECT ...... FROM TblRegistro"
    
    S = ""
    For K = 0 To List1.ListCount - 1
        If List1.Selected(K) Then
            S = S & List1.List(K) & "|"
        End If
    Next
    
    If S = "" Then Exit Sub
    
    S = Left(S, Len(S) - 1)
    
    Condizioni = Split(S, "|")
    
    If UBound(Condizioni) = 0 Then
        SQL = SQL & " WHERE Proponente='" & Condizioni(0) & "'"
    Else
        SQL = SQL & " WHERE "
        For K = 0 To UBound(Condizioni)
            SQL = SQL & "Proponente='" & Condizioni(K) & "'" & IIf(K < UBound(Condizioni), " OR ", "")
        Next K
    End If
    
    MsgBox SQL
    
    End Sub
    Boolean

  4. #4
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Grazie Boolean,
    ora ci lavoro sopra.
    Grazie della risposta anche ad alka
    LM

  5. #5
    Utente di HTML.it L'avatar di LMondi
    Registrato dal
    Sep 2004
    Messaggi
    1,291
    Ho preferito sostituire Select con Insert, in modo da poter creare una Tbl provvisoria nel DB , ove sono salvato i soli records spuntati nella Lv. In tal modo posso portare successivamente l'intero contenuto della predetta Tbl nel DataReport per l'anteprima e la stampa.
    Nel postare l'intera routine funzionante per gli amici del Forum, ringrazio ancora una volta Boolean il cui aiuto è stato determinante:
    codice:
    Public Sub PrintItem()
        On Error Resume Next
    
        Dim OggSR5 As New ADODB.Command
        Dim ConSR5 As New ADODB.Connection
    
        Dim itmy As ListItem
        Set itmy = FrmLisDiff.LvDiff.SelectedItem
        Dim i As Integer
        Dim ItemChd As Boolean
        Dim S As String
        Dim k As Integer
        Dim c As Integer
        
        Dim Condizioni() As String
             
            ItemChd = False
            
        ' Verifica l'esistenza di una selezione:
            For i = 1 To FrmLisDiff.LvDiff.ListItems.Count
                If FrmLisDiff.LvDiff.ListItems(i).Checked = True Then
                    ItemChd = True
                    Exit For
                ' Altrimenti Esce dalla routine:
                    ElseIf ItemChd = False Then
                    Exit Sub
                End If
            Next i
        
        'Se ItemChd = True (Selezione Attiva) acquisisce
        'i soli ListItems selezionati nella LV:
        If ItemChd = True Then
            For i = 1 To FrmLisDiff.LvDiff.ListItems.Count
                If FrmLisDiff.LvDiff.ListItems(i).Checked = True Then
                    S = S & FrmLisDiff.LvDiff.ListItems(i).Text & "|"
                End If
            Next
        End If
        
        ' Toglie l'ultimo separatore|:
        S = Left(S, Len(S) - 1)
        ' Inserisce i ListItems nella matrice:
        Condizioni = Split(S, "|")
        
        'Esegue la connessione con il DataBase:
            With ConSR5
                .ConnectionString = DataConnessione
                .CursorLocation = adUseClient   'tipo di cursore
                .Mode = adModeShareDenyNone     'nessuna limitazione
                .CommandTimeout = 15
                .Open
           End With
           
            OggSR5.ActiveConnection = ConSR5
            OggSR5.CommandType = adCmdText
    
        'Prima di salvare Elimina i vecchi records dalla TblDifferenzeSel:
            OggSR5.CommandText = "Delete * From TblDifferenzeSel"
            OggSR5.Execute
        
        ' Scorre LvDiff.ListItems step by step e verifica se = a Condizioni(k):
        For c = 1 To FrmLisDiff.LvDiff.ListItems.Count
            For k = 0 To UBound(Condizioni)
                If FrmLisDiff.LvDiff.ListItems(c).Text = Condizioni(k) Then
                    'Inserisce i dati della FrmLisDiff nel DB TblDifferenzeSel:
                    OggSR5.CommandText = "Insert Into TblDifferenzeSel(RegL, Dep, Prop, Res, ValC," _
                        & "OdinL, ImportDec, Differenza)" _
                        & "values ('" & (FrmLisDiff.LvDiff.ListItems.Item(c).Text) & "', '" & (FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(1)) & "', '" & (FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(2)) & " ', '" & (FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(3)) _
                        & "', '" & Ctr(FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(4)) & "', '" & Ctr(FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(5)) & "', '" & Ctr(FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(6)) & "', '" & Ctr(FrmLisDiff.LvDiff.ListItems.Item(c).SubItems(7)) & "');"
                    OggSR5.Execute
                End If
            Next k
        Next c
    
    'Chiude la connessione - TblDifferenzeSel:
        ConSR5.Close
        Set ConSR5 = Nothing
    End Sub
    LM

  6. #6
    Utente di HTML.it L'avatar di Boolean
    Registrato dal
    Oct 2005
    Messaggi
    758
    Felice di esserti stato d'aiuto

    Boolean

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 © 2025 vBulletin Solutions, Inc. All rights reserved.