Visualizzazione dei risultati da 1 a 10 su 10
  1. #1
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488

    Splittare e distinct già da query?

    E' possibile farlo? mi interessa recuperare ad esempio solo la prima parola del database e non ripeterla in visualizzazione più di una volta?

    HO FATTO COSI'...

    SQLCASE = "SELECT DISTINCT F2 FROM [Sheet1$] WHERE F2<>''"
    Set DBCCASE = connessionExcel.Execute (SQLCASE)
    if not DBCCASE.EOF then
    do while not(DBCCASE.eof)
    TITOLO_MAGAZZINO=DBCCASE("F2")
    TITOLO_MAGAZZINO=(Replace(TITOLO_MAGAZZINO," "," "))
    a=Split(TITOLO_MAGAZZINO)
    PRIMA = (a(0))
    RESPONSE.WRITE PRIMA & "
    "
    DBCCASE.movenext
    loop
    else
    ERRORE="Nessun case disponibile."
    end if
    set connesionExcel = nothing
    set DBCCASE = nothing
    set SQLCASE = nothing

    Mi splitta il tutto... ma ovviamente non mi effettua il distinct..

  2. #2
    con distinct, appunto

  3. #3
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488
    Il problema sta... nell'SQL

    perchè io splitto dopo aver, estratto da database, essendo campi non uguali:

    ad esempio mi ritrovo: CASE PEPPE
    CASE GIOVANNI

    ecc...

  4. #4
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488
    Ho un risultato del genere

    CASE
    CASE
    CASE

    VORREI SPLITTARE GIA' DA QRY ?

  5. #5
    da persona che ha l'esame il 7 di basi di dati , ti rispondo che l'sql "puro" serve solo ad effettuare un interazione con il database, lo split è una funzione che manipola i dati e quindi fuoriesce dalla "giurisdizione" di sql...
    Anche se esistono dei linguaggi ad hoc per questo tipo di lavori (linguaggi 4gl), ma non so se Excel li supporti (temo di no) e comunque ci sarebbe da lavorarci direttamente sul foglio...

    Ciau!
    - Atari

  6. #6
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488
    Azz..

    Mentre nel ciclo come potrei evitare ?

  7. #7
    un modo potrebbe essere quello di mettere i risultati in un array e ordinarli... poi fai un ulteriore scansione ed elimini i valori ridondanti...

    Ciau!
    - Atari

  8. #8
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488
    Un po di praticità nell'esempio fatto?

  9. #9
    Utente di HTML.it L'avatar di M@sE
    Registrato dal
    Oct 2001
    Messaggi
    488
    UP!

  10. #10
    Per esempio :
    codice:
    ' Dichiari l'array temporaneo
    recordCount = conn.Execute("SELECT Count(*) AS totale FROM tabella")("totale")
    ReDim tmp(recordCount)
    
    ' Popoli l'array
    FOR I = 1 TO recordCount 
    fValore = fSplit(objRs("campo")) ' dove fSplit è la funzione per lo split dell'attributo
    tmp(I-1) = fValore
    NEXT
    
    ' Lo ordini ( esistono metodi più efficienti se i dati sono tanti ) : 
    FOR I = 0 TO recordCount -2
    minimo = I
    FOR J = I+1 TO recordCount -1
    IF(StrComp(tmp(J), tmp(minimo)) < 0) THEN
    minimo = J
    END IF
    NEXT
    
    IF(minimo > I) THEN
    swap(minimo, I) ' swap sarà una funzione per scambiare i dati delle posizioni minimo ed I
    END IF
    
    NEXT
    
    ' Elimini le parti ridondanti
    FOR I = recordCount -2 TO 0 STEP -1
    IF(A[i] == A[i+1]) THEN a[i+1] = ""
    NEXT
    Ciau!
    -Atari

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