Oppure

Loading
23/02/10 17:04
mikelinux
Salve ragazzi vi spiego il mio problema

Dim cnviewtransac As New ADODB.connection
Dim rsviewtransac As New ADODB.recordset

Dim tot, X
                                  
Call connection(cnviewtransac, App.Path & "\db1.mdb", "rbp")
Call recordset(rsviewtransac, cnviewtransac, "SELECT * FROM listaoperai WHERE nomecognome")
                                                                           

                                                                           
ListView1.ListItems.clear
                                       
    With rsviewtransac
        While Not .EOF
            Set X = ListView1.ListItems.Add(, , .Fields!Nomecognome)
                X.SubItems(1) = .Fields!Nomecognome
                .MoveNext
        Wend

    End With

    'Text18.Text = tot
    

    
Set cnviewtransac = Nothing
Set rsviewtransac = Nothing


fin qui tutto ok ora arriva il bello perche ora voglio che che carico nel prossimo code siano riconosciuti tra quelli inseriti nel primo code e quindi ceccati

Dim cnloadclientz As New ADODB.connection
Dim rsloadclientz As New ADODB.recordset

Call connection(cnloadclientz, App.Path & "\db1.mdb", "rbp")
Call recordset(rsloadclientz, cnloadclientz, "SELECT * FROM oreoperai WHERE idg='" & Combo1.Text & "'")

With rsloadclientz
    While Not .EOF

    '.Fields!Nomecognome ??????????????

    'ListView1.ListItems.Add = .Fields!Nomecognome ?????????????? Questo aggiunge nomi creando duplicati
     ListView1.ItemCheck = .Fields!Nomecognome
     
    
    'ListView1.AddItem .Fields!mezzo ??????????????

    .MoveNext
    Wend
End With

Set cnloadclientz = Nothing
Set rsloadclientz = Nothing


il risultato finale se trovasse solo il valore "michel xxxxx" dovra essere quello in foto

Buon Divertimento :pat: spero di essere la palla che prende le pacche sul testone...
Ultima modifica effettuata da mikelinux 25/02/10 16:26
aaa
23/02/10 18:58
Scusa ... ma quali dati devi estrarre dal tuo DB ?

E come è fatto il DB ? E' normalizzato ?

Le frasi SQL che usi non sono chiare ... questo tipo di problemi si affrontano con una corretta impostazione del DB e con le corrette interrogazioni ...
24/02/10 11:32
mikelinux
ti invio un altra immagine per capire meglio il database
aaa
24/02/10 12:09
Il DB non è normalizzato e questo è un grosso problema per il tuo programma.

Nella tabella delle "orelavorate" non ci va il "Cognome e Nom" ma l'ID corrispondente presente nella tabella "listaoperai".

Fatto questo, quale risultato vorresti ottenere (intendo come dati visualizzati a chi utilizza il programma) ...
24/02/10 18:20
mikelinux
ti ringrazio per avermi risposto cmq non credo che tu abbia capito il problema e in parte credo sia colpa mia almeno spero....

il fatto è che in listview1 sono presenti dei nomi gia immessi da una tabella che sarebbero gli opreai dell azienda e se fossero 10 ce ne sarebbero 10 presenti con come e cognome... detto cio io voglio che il programma mi selezioni sono quelli che in quella data quindi idg erano presenti ceccandoli....

esempio se michel era presente quel giorno il programma deve ceccarmi sono michel nella lista dei 10 operai presenti

il codice del form modifica giornaliera
Public Sub viewlistaoperai()
    Dim lst As ListItem     'dim a listitem
    Dim i As Integer        'loop
    
    With Me.ListView1       'reference
        .Checkboxes = True          'show with check boxes
        .MultiSelect = True         'allow multi-selection
        .HideSelection = False      'keep selection when lost focus
        .FullRowSelect = True       'select the full row
        .GridLines = True           'show grid lines
        .View = lvwReport           'show details
        '.Icons = Me.ImageList1(1)   'use this for large icons
        '.SmallIcons = Me.ImageList1(0)  'for small ones
        .ColumnHeaders.Add          'add a couple columns
        .ColumnHeaders.Add
        .ColumnHeaders(1).Text = "Nome e Cognome"     'name the columns
        .ColumnHeaders(1).Width = .Width * 0.98     'column width based on width of list view
        .ColumnHeaders(2).Text = ""
        .ColumnHeaders(2).Width = .Width * 0
        '.Arrange = lvwAutoLeft
        
        For i = 1 To 30             'add some sample items
            .ListItems.Add 1, "K" & i, "Some Text " & Format$(i, "00")
            Set lst = .ListItems("K" & i)   'now work with the item
            With lst
                If i Mod 2 Then     'alternate the text and icons
                    '.Icon = "ie icon"
                    '.SubItems(1) = "Internet Explorer " & Format$(i, "00")
                    
                Else
                    '.Icon = "computer icon"
                    '.SubItems(1) = "Computer " & Format$(i, "00")
                End If
                '.SmallIcon = .Icon
            End With
        Next
        .SortKey = 0    'first column
        .Sorted = True  'sort it
        .ListItems(1).Selected = True   'select the first one
        .ListItems(1).EnsureVisible     'make sure it is visible
        .ListItems(1).Checked = True    'check this one as well
        
        'Text4 = Val(Text4.Text) + Val(1)
    End With
    'For Each itm In Me.ListView1.ListItems
    '    itm.Checked = bValue
    'Next
'--inizio listaoperai access-------------------------------------------------------------------------
Dim cnviewtransac As New ADODB.connection
Dim rsviewtransac As New ADODB.recordset

Dim tot, X
                                  
Call connection(cnviewtransac, App.Path & "\db1.mdb", "rbp")
Call recordset(rsviewtransac, cnviewtransac, "SELECT * FROM listaoperai WHERE nomecognome")
                                                                           

                                                                           
ListView1.ListItems.clear
                                       
    With rsviewtransac
        While Not .EOF
            Set X = ListView1.ListItems.Add(, , .Fields!Nomecognome)
                X.SubItems(1) = .Fields!Nomecognome

                .MoveNext
        Wend

    End With

    'Text18.Text = tot
    

    
Set cnviewtransac = Nothing
Set rsviewtransac = Nothing
'---fine listaoperai access --------------------------------------------------------------------------

End Sub

Private Sub wievoreoperai()
Dim cnloadclientz As New ADODB.connection
Dim rsloadclientz As New ADODB.recordset

Call connection(cnloadclientz, App.Path & "\db1.mdb", "rbp")
'Call recordset(rsloadclientz, cnloadclientz, "SELECT * FROM oreoperai ORDER BY IDg ASC")
Call recordset(rsloadclientz, cnloadclientz, "SELECT * FROM oreoperai WHERE idg='" & Combo1.Text & "'")

With rsloadclientz
    While Not .EOF

    
   
    '.Fields!Nomecognome
    'ListView1.ListItems.Add = .Fields!Nomecognome
     ListView1.ItemCheck = .Fields!Nomecognome
     
    

    .MoveNext
    Wend
End With

Set cnloadclientz = Nothing
Set rsloadclientz = Nothing
End Sub



ti allego altra foto...
Ultima modifica effettuata da mikelinux 25/02/10 16:32
aaa
24/02/10 18:57
Postato originariamente da mikelinux:

ti ringrazio per avermi risposto cmq non credo che tu abbia capito il problema e in parte credo sia colpa mia almeno spero....


Invece ho capito ma forse non mi sono spiegato a sufficienza ...

il fatto è che in listview1 sono presenti dei nomi gia immessi da una tabella che sarebbero gli opreai dell azienda e se fossero 10 ce ne sarebbero 10 presenti con come e cognome... detto cio io voglio che il programma mi selezioni sono quelli che in quella data quindi idg erano presenti ceccandoli....


Questo tipo di problemi si affrontano con opportune query (in genere delle SELECT con dei JOIN) tramite cui chiedere al DBMS esattamente e direttamente le informazioni che ti servono. Ma per porterlo fare è necessario che il database sia correttamente progettato, cosa che non è per il tuo DB.

Da questo derivano tutti i problemi che hai (e ne potranno nascere tanti altri ...).

Ultima modifica effettuata da 24/02/10 18:58
25/02/10 9:18
mikelinux
ho seguito il tuo consiglio nell ottimizzazione del database mettendo Nella tabella delle "orelavorate" l'ID corrispondente presente nella tabella "listaoperai". il fatto pero rimane che il problema è rimasto non so la stringa per ceccare


 Dim cnloadclientz As New ADODB.connection
Dim rsloadclientz As New ADODB.recordset

Call connection(cnloadclientz, App.Path & "\db1.mdb", "rbp")
'Call recordset(rsloadclientz, cnloadclientz, "Select * FROM oreoperai ORDER BY IDg ASC")
Call recordset(rsloadclientz, cnloadclientz, "Select * FROM oreoperai WHERE id='" & Combo1.Text & "'")

With rsloadclientz
    While Not .EOF


     ListView1.ItemCheck = .Fields!id
    ' il problema rimane non è questo il comando per ceccare id gia esistenti...  
    

    .MoveNext
    Wend
End With

Set cnloadclientz = Nothing
Set rsloadclientz = Nothing



l'unica cosa che ora penso a questo punto è che sia sbagliato il ragionamento a livello programmazione... al che riformulo la domanda come faccio a ceccare id gia esistenti?

ListView1.deviceccamaledettastringa .Fields!id :rofl:
Ultima modifica effettuata da mikelinux 25/02/10 15:00
aaa
25/02/10 16:25
mikelinux

Dim cnloadclientz As New ADODB.connection
Dim rsloadclientz As New ADODB.recordset

Call connection(cnloadclientz, App.Path & "\db1.mdb", "rdf")
Call recordset(rsloadclientz, cnloadclientz, "SELECT * FROM oreoperai WHERE idg='" & Combo1.Text & "'")

With rsloadclientz
    While Not .EOF

    For Each ListItem In Me.ListView1.ListItems
    If .Fields!id= ListView1.Checkboxes Then
    ListItem.Checked
    End If
    Next

    .MoveNext
    Wend
End With

Set cnloadclientz = Nothing
Set rsloadclientz = Nothing



ho fatto in questo modo ma non funziona ancora :( sono fermo da 2 giorni credo che il ListView1 non sia ottimale per questo genere di cose voi che ne pensate?:grr:
Ultima modifica effettuata da mikelinux 25/02/10 17:38
aaa