Pagina 1 di 2 1 2 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 14

Discussione: [VB6] Query con GROUP

  1. #1

    [VB6] Query con GROUP

    In una tabella ho molti record, con i campi sequenti

    COD.FAMIGLIA - NOME PRODOTTO - CATEGORIA

    Il DB è vecchio, a suo tempo le tabelle non sono state relazione creando un PADRE, che aveva i campi qui sopra uguali per tutti, a cui veniva collegati i figli ossia tutti i CODICI dei singoli componenti che creano la FAMIGLIA

    Il contetto mi sembra chiaro, o no...

    Quindi facendo un esempio adesso mi trovo con una unica tabella cosi fatta.

    Esempio:

    T01 IRIS TAVOLO T01_001 DISEGNO_TECNICO GAMBA
    T01 IRIS TAVOLO T01_002 DISEGNO_TECNICO PIEDINO
    T01 IRIS TAVOLO T01_003 DISEGNO_TECNICO TOP
    T01 IRIS TAVOLO T01_004 DISEGNO_TECNICO CRISTALLO
    T01 IRIS TAVOLO T01_005 DISEGNO_TECNICO FASCIONI
    T02 ARAN TAVOLO T02_001 DISEGNO_TECNICO GAMBA
    T02 ARAN TAVOLO T02_002 DISEGNO_TECNICO PIEDINO
    T02 ARAN TAVOLO T02_003 DISEGNO_TECNICO TOP
    T02 ARAN TAVOLO T02_004 DISEGNO_TECNICO CRISTALLO
    T02 ARAN TAVOLO T02_005 DISEGNO_TECNICO FASCIONI

    Io voglio creare una query che mi visualizzi raggruppando la famiglia

    T01 IRIS TAVOLO
    T02 ARAN TAVOLO
    T03 ecc. TAVOLO
    T04 ecc. TAVOLO
    T05 ecc. TAVOLO

    Mi sembra di aver spiegato bene il concetto

    Inizio la mia query:

    Dim valore3 As String
    valore3 = "TAVOLI"
    rsRecordSet2.Open "SELECT [COD.FAMIGLIA],[NOME PRODOTTO],[CATEGORIA] From [Struttura: Archivio] where [CATEGORIA]='" & Replace(valore3, "'", "''") & "' order by [COD.FAMIGLIA]", Cn, adOpenStatic, adLockOptimistic


    Cosi fatta, mi tira fuori tutti i record che fanno riferimento ai TAVOLI.

    Io la vorrei che sopra spiegato

    Mi potete aiutare

    Ciao e grazieeeeeeeeeee

  2. #2
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Dim valore3 As String
    valore3 = "TAVOLI"
    rsRecordSet2.Open "SELECT [COD.FAMIGLIA],[NOME PRODOTTO],[CATEGORIA] From [Struttura: Archivio] where [CATEGORIA]='" & Replace(valore3, "'", "''") & "' GROUP BY [COD.FAMIGLIA], [NOME PRODOTTO] order by [COD.FAMIGLIA]", Cn, adOpenStatic, adLockOptimistic

    così dovrebbe funzionare (non so bene i nomi da raggruppare, vedi tu…)

    Ciao !!

  3. #3

    Ok

    Può andar bene solo che c'è un grosso problema.

    Quando sono stati inseriti a volte in nome prodotto è scritto diversamente, una volta in maiuscolo una in minuscolo, una c'è un spazio un altro no, quindi capita che mi estrae più volte il nome per la stesse famiglia

    Ho provato a farlo sotto access e il problema viene risolto perchè in access mi cerca la famiglia e mi estrae il PRIMO [NOME PRODOTTO]

    Ecco la query in access:


    SELECT [Struttura: Archivio].[COD.FAMIGLIA] AS Espr1, First([Struttura: Archivio].[NOME PRODOTTO]) AS [PrimoDiNOME PRODOTTO], [Struttura: Archivio].[CATEGORIA] AS Espr2
    FROM [Struttura: Archivio]
    GROUP BY [Struttura: Archivio].[COD.FAMIGLIA], [Struttura: Archivio].[CATEGORIA]
    HAVING ((([Struttura: Archivio].[CATEGORIA])="TAVOLI"));

    Questa è perfetta, perchè raggruppo solo le COD.FAMIGLIA a cui associa il primo NOME PRODOTTO che trova, non creando le ripetizione

    Me la potete adattare al mia situzione

    Ciao e grazieeeeeeeee

  4. #4
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    rsRecordSet2.Open "SELECT [COD.FAMIGLIA],[NOME PRODOTTO],UCase([CATEGORIA]) AS Categoria_Maiuscola From [Struttura: Archivio] where UCase([CATEGORIA])='" & Replace(valore3, "'", "''") & "' GROUP BY [COD.FAMIGLIA], [NOME PRODOTTO] order by [COD.FAMIGLIA]", Cn, adOpenStatic, adLockOptimistic

    Ciao !!

  5. #5

    Ok

    Ok però il problema è ancora più grosso ti faccio un esempio

    Cod

    L01 Giroletti alluminio
    L01 Giroletti alluminio
    L01 Giroletti alluminio

    Hai capito????

    Quando gli utenti compilavano, hanno sbagliato più volte a metter il nome, però il COD.FAMIGLIA sono corretti

    In access con quella query scritta sopra, lui mi fa il GROUP solo della famiglia quindi in questa casa mi estrae L01 a cui gli associa il PRIMO nomeprodotto che trova

    Altrimenti avrei tanti L01 quante solo le scritte Nome Prodotto diverse.....


    In access mi crea questi query:
    SELECT [Struttura: Archivio].[COD.FAMIGLIA] AS Espr1, First([Struttura: Archivio].[NOME PRODOTTO]) AS [PrimoDiNOME PRODOTTO], [Struttura: Archivio].[CATEGORIA] AS Espr2
    FROM [Struttura: Archivio]
    GROUP BY [Struttura: Archivio].[COD.FAMIGLIA], [Struttura: Archivio].[CATEGORIA]
    HAVING ((([Struttura: Archivio].[CATEGORIA])="TAVOLI"));

    Si può convertrila per VB????

    Ciao e grazieeeeeeee

  6. #6
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    valore3="TAVOLI"
    rsRecordSet2.Open "SELECT [COD.FAMIGLIA],[NOME PRODOTTO],First([Struttura: Archivio].[NOME PRODOTTO]) AS [PrimoDiNOME PRODOTTO] From [Struttura: Archivio] where UCase([CATEGORIA])='" & valore3 & "' GROUP BY [COD.FAMIGLIA], [CATEGORIA] order by [COD.FAMIGLIA]", Cn, adOpenStatic, adLockOptimistic

    P.S. WHERE è molto più rapida di HAVING. Inoltre, se il campo di HAVING non è una chiave, diventa lentissima perchè scorre tutti i records.

    P.S. 2 la Query non è key-sensitive, quindi ti fornisce sia maiuscole che minuscole.

    Ciao !!

  7. #7

    K

    Ok funziona..............

    Grazieeeeeeeeeeeeeeeee



    Un'altra cosa.

    C'è un modo per impostare alla textbox nel datareport che ogni valore lo deve visualizzare sempre in MAIUSCOLO

    Se si dove lo devo impostare e come????

    Ciao e grazieeeeeeeeeeee

  8. #8
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117

    Re: K

    Originariamente inviato da marco.santilli
    C'è un modo per impostare alla textbox nel datareport che ogni valore lo deve visualizzare sempre in MAIUSCOLO
    Ciao !

    Scusa il ritardo, ma ero in autostrada...

    per visualizzare in maiuscolo, per esempio, potresti:
    Private Sub Text1_Change()
    Text1 = UCase(Text1)
    End Sub

    Ciao !!!

  9. #9

    No va

    Lo devo mettere nella finestra del datareport????

    Perchè cosi non funziona

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    117
    Ciao, nell'esempio, Text1 è un controllo che mostra un campo del Recordset. Nel momento in cui viene letto il Recordset, il campo viene riassegnato in caratteri maiuscoli.

    Forse non ho capito ?

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.