Pagina 2 di 4 primaprima 1 2 3 4 ultimoultimo
Visualizzazione dei risultati da 11 a 20 su 40
  1. #11
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Per jupynet:
    Il mio era un esempio fatto per cercare di spiegarmi, ma evidentemento vi ho confuso un po' le idee.
    In realta' " nomi" / "animali" / "fumetti" sono solo i nomi delle variabili che devo leggere
    e che carico in ( var ) di volta in volta, e vengono ricavati da processi precedenti.
    Capito?... no?... , lo so, lo so, ma e' difficile spiegare i sigoli passaggi se non si conosce il tutto.

    Per eziogsv:
    Il tuo sistema funziona bene, ma cosi' facendo perdo Il nome delle variabili a cui faccio riferimento
    in altri processi, ti scrivo il codice reale:

    Prima:
    Dim reg1 As String = "Abruzzo,Tutte,Chieti,L'Aquila,Pescara,Teramo"
    Dim reg2 As String = "Basilicata,Tutte,Matera,Potenza"
    ........

    Ora:
    dict.Add("reg1", "Abruzzo,Tutte,Chieti,L'Aquila,Pescara,Teramo" )
    dict.Add("reg2", "Basilicata,Tutte,Matera,Potenza")
    .........

    Quindi se uso questo metodo, devo capire come recuperare i riferimenti.
    Capito?... no?... , lo so, lo so, ......
    Abbiate pazienza, ho una mente un po' contorta, ma alla fine di solito i risultati sono buoni.

    In un database con Access avevo utlizzato un metodo che funzionava, mi sembra con una query,
    ma non sono ancora riuscito a trasferirlo in VB.

    Comunque ti ringrazio perche' ho imparato cose nuove, e mi dedichero' pure al tuo nuovo
    suggerimento.

    Ringrazio e saluto tutti, alla prossima.

  2. #12
    Quote Originariamente inviata da vegiott Visualizza il messaggio
    Quindi se uso questo metodo, devo capire come recuperare i riferimenti.
    Capito?... no?... , lo so, lo so, .......
    Non credo di aver capito, ma provo: col metodo da me indicato passi da "reg1" ad "Abruzzo,Tutte,Chieti,L'Aquila,Pescara,Teramo" ... ma poi devi tornare indietro, cioè passare da "Abruzzo" (è un esempio) a "reg1"??

    Se è così, datosi che il Dictionary è organizzato in Keys e Values... basta fare un For Each nei dict.Values e recuperare il nome della Key se il singolo Value contiene ciò che cerchi. Al lavoro .

    Se NON è così... come non detto.
    Ultima modifica di eziogsv; 25-01-2018 a 20:46

  3. #13
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Ciao eziogsv.
    Non so se la cosa ti possa interessare, ma a titolo di curiosita' ho pensato di postarti il codice
    che avevo implementato in Access2003 per svolgere la ricerca.

    avevo creato una variabile in un modulo " Varibili_Pubbliche "
    Public VP_JollyUno As String

    avevo creato una funzione in un modulo " Funzioni_Pubbliche "
    Public Function JollyQueryUno() As String
    JollyQueryUno = VP_JollyUno
    End Function

    nel Form popolavo la variabile a seconda della necessita'

    Private sub .........
    VP_JollyUno = "*2015*"
    Call Selezione

    e in questa routine utilizzavo la funzione

    Private sub Selezione()
    strDirettivaSQL = "SELECT [T1_TabellaMedia].[CodMedia], ............
    "FROM [T1_TabellaMedia]" & _
    "WHERE [T1_TabellaMedia].[DataAcquisizione] Like JollyQueryUno()
    DoCmd.RunSQL strDirettivaSQL

    Con " Like VP_JollyUno() " non funziona.

    Ciao.

  4. #14
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Ciao eziogsv.
    Scusa ma ho letto la tua mail dopo che ti ho postato la mia.
    Neuroni in agitazione !*&"?**°ç$%ssssxxx!*???
    Non ho ancora realizzato la precedente ( Select Case... ) che gia' mi propini ( For Each e....... ).
    Sei molto gentile e ti ringrazio, faro' sicuramente le prove necessarie per capire, ma prima
    devo prendere fiato altrimenti fondo.

    A presto.

  5. #15
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Vorrei mangiare le caramelle che sono nella (scatola di caramelle) che si trova in una
    (scatola piu' grossa), ma non posso mangiare le caramelle della (scatola di caramelle) perche'
    dentro la (scatola piu' grossa) non c'e' la (scatola di caramelle) ma un bigliettino con scritto
    "caramelle". Quindi se voglio mangiare le caramelle devo cercare la (scatola di caramelle)
    con scritto "caramelle".

    Tradotto:
    Vorrei leggere il contenuto di una variabile ("animali") contenuta in una variabile (var),
    ma dentro (var) non c'e' una variabile ma una stringa di testo "animali", quindi per leggere
    il contenuto di ("animali") dovro' cercare una variabile di nome "animali".

    Quindi?...............

    E' stato Bill Gates a dire " siate folli " non io!

    Saluti.

  6. #16
    .... e quindi:

    usando le variabili di cui al tuo esempio iniziale anziché un Dizionario ti fai un bel Select Case var, ove var non sarà più il nome della variabile per cercare il testo (andata) ma il testo contenuto nella variabile per cercare il nome della variabile (ritorno). Codice più lungo e menoso, ma pur sempre 4 righe di codice.

    Usando un dizionario dovrai fare il percorso "inverso" rispetto all' andata, con un For Each str as string in dict.Values per risalire alla Key (animali, nome della variabile) quando il Value sarà quello contenuto in (animali) (ritorno).

    Molto più facile a farsi che a dirsi, come nel tuo caso. Non è che non lo scrivo per cattiveria... è che se ci arrivi da te è molto meglio. Altrimenti dimmi, che scrivo (sempre se ho capito il problema ).

    E siccome oggi mi sento particolarmente malandrino ( ) aggiungerei, ciliegina sulla torta, che tutto sommato usando due List(Of String) o, ancor meglio se alle prime armi, due Matrici di stringhe, una contenente i nomi delle variabili ed una contenente i rispettivi contenuti, la soluzione del problema sarebbe concettualmente ancora più semplice, fermo restando che le Liste sono più facilmente gestibili in caso di aggiunte o modifiche.
    Ultima modifica di eziogsv; 26-01-2018 a 16:49

  7. #17
    Taglio la testa al toro e vediamo se è quello che ti serve. Uso le Liste che con un minimo di pratica sono più gestibili delle matrici:

    codice:
            Dim var As String  
            Dim Chiavi As New List(Of String), Contenuto As New List(Of String)
            Chiavi.Add("nomi")
            Chiavi.Add("animali")
            Chiavi.Add("fumetti")
            Contenuto.Add("Mario, Giorgio,Franco,......")
            Contenuto.Add("Cane,Gatto,Cavallo,......")
            Contenuto.Add("Pippo,Pluto,Paperino,......")
    
    
            'andata
            var = "animali"
            For x As Integer = 0 To Chiavi.Count - 1
                If Chiavi(x).Contains(var) Then
                    var = Contenuto(x)
                    MessageBox.Show(var)
                    Exit For  'se risposta univoca
                End If
            Next
    
    
            'ritorno
            var = "Paperino"
            For x As Integer = 0 To Contenuto.Count - 1
                If Contenuto(x).Contains(var) Then
                    var = Chiavi(x)
                    MessageBox.Show(var)
                    Exit For  'se risposta univoca
                End If
            Next

    Sappimi dire se ho capito il problema.
    Ultima modifica di eziogsv; 26-01-2018 a 16:52

  8. #18
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Ciao eziogsv.
    Ti ringrazio per la tua disponibilità, ti stò seguendo molto attentamente ( anche se lentamente )
    In questi giorni ho degli impegni che mi riducono il tempo disponibile, però ho lavorato
    sui metodi che mi hai consigliato.

    Ho letto le tue mail e riguardo alla prima ho già fatto qualche esperimento con Select Case var.
    Riguardo alla seconda mail al primo sguardo mi sembra che hai capito molto bene la situazione,
    penso anch'io che possa essere il metodo migliore per la mia situazione.
    Mi metto al lavoro, sono impaziente di vedere qualche risultato.

    Se non chiedo troppo avrei ancora una cosa da chiederti riguardo al Dictionary:
    Durante alcune prove ho incontrato questo problema:
    la prima parte funziona (come ti ho detto l'altra volta)

    If dict.ContainsKey(var) Then
    DaCercare = dict.Item(var).ToString
    MessageBox.Show(DaCercare)
    End If

    Poi se cerco di fare delle operazioni su 'DaCercare' mi segnala sempre errore, esempi:

    If DaCercare.Contains(prov) Then ...
    DaCercare.Remove("Abruzzo")

    Errore: La variabile 'DaCercare' viene utilizzata prima che venga assegnato un valore.
    Ma se 'DaCercare' viene correttamente visualizzata prima, perchè segnala errore?

    Domanda da novello: questa discussione è sempre in tema? posso continuare quì?

    Grazie ancora e saluti.

  9. #19
    Premesso che l' uso di semplici variabili stringa lo escluderei, e quindi il Select Case personalmente lo lascerei perdere a questo punto suggerirei di usare le Liste anziché il Dizionario, il cui codice è più facile da gestire per un neofita di VB.NET.

    Riguardo al codice "DaCercare.Remove("Abruzzo")"... la funzione String.Remove si aspetta uno o due integer e non un stringa.

    https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx

    Da cui probabilmente l' errore. Mi domando come mai non ti abbia dato errore mentre la hai scritta: in Progetto / Proprietà / Compilazione hai Option Explicit ON e Option Strict ON??

    Rimuovere direttamente STRINGHE lo puoi fare con le Liste, da cui la semplicità del loro uso.

    Comunque per rimuovere "Abruzzo" dalla Stringa puoi fare:

    DaCercare = DaCercare.Replace(
    "Abruzzo","")

    (se scrivi solo DaCercare.Replace("Abruzzo","").... DaCercare rimane quello che è, visto che non lo hai riassegnato)
    Ultima modifica di eziogsv; 26-01-2018 a 19:13

  10. #20
    Utente di HTML.it
    Registrato dal
    Jan 2018
    Messaggi
    30
    Ciao eziogsv.
    Intanto che mi scrivevi sperimentavo.
    Il link che mi hai segnalato ( https://msdn.microsoft.com/it-it/lib...v=vs.110).aspx )
    lo avevo già visto, ma non lo avevo collegato al mio caso ...sob.
    Adesso credo di aver capito perche', infatti in questo caso mi funziona:

    If DaCercare.Contains(ComboBox1.SelectedItem) Then
    MsgBox("uguale")

    No, Option Strict era ad Off, ma comunque alcune anomalie le segnala comunque
    infatti 'DaCercare' me lo sottolinea sempre in verde, anche se funziona.
    Grazie per il ' Replace ', l'avevo già provato ma evidentemente era scritto male perchè
    non funzionava.
    Select Case, dopo aver fatto qualche prova, l'ho momentaneamente sospeso
    perche' non sono ancora riuscito ad ingranare.
    Riguardo alle Liste ho cominciato a provare ed ho notato che e' molto simile a Dizionario,
    ma il primo mi obbliga a raddoppiare le righe, e non ho ancora capito come si relazionano
    'Chiavi' e 'contenuto'. Comunque tengo duro, e avanti a testa bassa.

    Per chiarire meglio la situazione, come avrai capito, in questo Form le stringhe contengono
    nomi di province e di regioni; quindi con i diversi metodi si presentano così:

    Con 'Select Case': Dim reg1 As String = "Abruzzo,Tutte,Chieti,L'Aquila,Pescara,Teramo" - Totale 20 righe
    Con 'Dictionary': dict.Add("reg1", "Abruzzo,Tutte,Chieti,L'Aquila,Pescara,Teramo" ) - Totale 20 righe
    Con 'List: regioni.Add("reg1")
    province.Add("Abruzzo,Tutte,Chieti,L'Aquila,Pescar a,Teramo") - Totale 40 righe

    E' un bel dilemma, anche se all'apparenza il metodo Dictionary sembra " più meglio ".

    Per il Weekend vorrei lasciarti tranquillo, perciò alla prossima e grazie ancora.

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.