Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 24
  1. #1
    Utente bannato L'avatar di javipampa2
    Registrato dal
    Nov 2003
    Messaggi
    210

    Spezzettare stringa e fare query!!!

    Buona sera a tutti

    Immaginate un menu ad albero e la stringa qui sotto.
    Ho una stringa del genere A-AA-AAA-AB-ABA-B-BB che messa a menu ad albero viene fuori cosi:

    A
    AA
    AAA
    AB
    ABA
    B
    BB

    I dati mi arrivano come sopra ho descritto e devo crearne una query di interrogazione...

    Vorrei splittare la stringa ad ogni "-" e farmi venire fuori una query del genere:

    Select * from tabella where X = A and (Y = AA OR Y = AB) and (Z = AAA OR Z=ABA) OR X = B and (Y = BB)


    Non so se mi avete capito ma con attenzione capirete.
    GRAZIE A CHI MI PUO AIUTARE!STO INCASINATISSIMA!!!

  2. #2
    io non vedo un ordine logico in quello split ad albero...ma vengono fuori sempre con quella struttura o puo essere, che ne so:

    A
    AA
    AB
    B
    C
    CC

    etc

    ?

    cmq, partendo dallo split:
    codice:
    mia_var=split(stringa,"-")

  3. #3
    devi fare una cosa di questo tipo:

    'ARRAY
    matrassocia = Split(tipo, ", ",-1,1)
    i = 0
    Do While Not ((UBound(matrassocia) + 1) = i)
    '## PUOI INSERIRE LE TUE ELABORAZIONI, CON LA FUNZIONE QUI SOTTO PUOI RICAVARE IL VALORE
    '## CON QUESTA ISTRUZIONE PUOI RICAVARE IL VALORE ##
    matrassocia(i)
    '################################################# ###
    '################################################# ###
    i = i + 1
    Loop

    'fine

    ovviamente poi vedi tu come fare...
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  4. #4
    killer ma che split è?

    era sul trattino non sulla virgola

    cmq se javi risponde magari mi ci appassiono a questa cosa che mi stava stuzzicando

  5. #5
    ho copiato un mio script...
    che lo faceva sulla virgola...
    ho fatto invia troppo presto :S
    non ho fatto la modifica lol

    bhe, cmq credo che se lo possa adattare lui :P
    Ah, Jedis! I had no ideas! What can i do for you, honored Jedis?

    I'm not Jedi. I'm a guy with a lighsaber and a few questions.

  6. #6
    Utente bannato L'avatar di javipampa2
    Registrato dal
    Nov 2003
    Messaggi
    210
    Scusate eccomi di nuovo in effetti potevo spiegarmi meglio...
    Ora ci provo.

    Il menu ad albero è dinamico e ogni elemento è identificato da un nome(es:Oggetto) concatenato al'ID(es:Oggetto1).Ok?

    PRovo a ricostruire il menu e la stringa che viene fuori


    Oggetto1
    Parte1
    Azione1
    Parte4
    Azione2
    Oggetto5
    Oggetto9
    Parte2

    La stringa concatenata di tutti gli elementi arriverebbe cosi:
    Oggetto1-Parte1-Azione1-Parte4-Azione2-Oggetto5-Oggetto9-Parte2

    ok fin qui?
    A me serve soltanto l'id per costruire la query.Es(1-1-1)

    Ora devo costruirci la query.Ovviamente dovrò separare la stringa al "-".

    La query originata dovrebbe essere:
    select * from tabella where oggetto = oggetto1 and (parte = parte1 or parte = parte4) and (azione = azione1 or azione = azione2) or oggetto = oggetto5 or oggetto = oggetto9 and parte = parte2

    Non riesco a elaborarla però perche per come sono messi in campi quando entra nella prima azione del primo oggetto dovrebbe capire che poi c'è un'altra parte e quindi andare a mettere la parte nell'OR con l'altra parte e non in AND con l'azione.Insomma spero abbiate capito un pochino di più

    Grazie a tutti!

  7. #7
    Utente bannato L'avatar di javipampa2
    Registrato dal
    Nov 2003
    Messaggi
    210
    Originariamente inviato da javipampa2
    Scusate eccomi di nuovo in effetti potevo spiegarmi meglio...
    Ora ci provo.

    Il menu ad albero è dinamico e ogni elemento è identificato da un nome(es:Oggetto) concatenato al'ID(es:Oggetto1).Ok?

    PRovo a ricostruire il menu e la stringa che viene fuori


    Oggetto1
    ---Parte1
    -----Azione1
    ---Parte4
    -----Azione2
    Oggetto5
    Oggetto9
    ----Parte2

    La stringa concatenata di tutti gli elementi arriverebbe cosi:
    Oggetto1-Parte1-Azione1-Parte4-Azione2-Oggetto5-Oggetto9-Parte2

    ok fin qui?
    A me serve soltanto l'id per costruire la query.Es(1-1-1)

    Ora devo costruirci la query.Ovviamente dovrò separare la stringa al "-".

    La query originata dovrebbe essere:
    select * from tabella where oggetto = oggetto1 and (parte = parte1 or parte = parte4) and (azione = azione1 or azione = azione2) or oggetto = oggetto5 or oggetto = oggetto9 and parte = parte2

    Non riesco a elaborarla però perche per come sono messi in campi nella stringa quando entra nella prima azione del primo oggetto dovrebbe capire che poi c'è un'altra parte e quindi andare a mettere la parte nell'OR con l'altra parte e non in AND con l'azione.Insomma spero abbiate capito un pochino di più

    Grazie a tutti!

  8. #8
    Utente bannato L'avatar di javipampa2
    Registrato dal
    Nov 2003
    Messaggi
    210
    Originariamente inviato da santino83
    killer ma che split è?

    era sul trattino non sulla virgola

    cmq se javi risponde magari mi ci appassiono a questa cosa che mi stava stuzzicando
    grazie, ho risposto tardi ma spero mi possiate aiutare

  9. #9
    Utente bannato L'avatar di javipampa2
    Registrato dal
    Nov 2003
    Messaggi
    210
    Originariamente inviato da Killer99
    devi fare una cosa di questo tipo:

    'ARRAY
    matrassocia = Split(tipo, ", ",-1,1)
    i = 0
    Do While Not ((UBound(matrassocia) + 1) = i)
    '## PUOI INSERIRE LE TUE ELABORAZIONI, CON LA FUNZIONE QUI SOTTO PUOI RICAVARE IL VALORE
    '## CON QUESTA ISTRUZIONE PUOI RICAVARE IL VALORE ##
    matrassocia(i)
    '################################################# ###
    '################################################# ###
    i = i + 1
    Loop

    'fine

    ovviamente poi vedi tu come fare...
    Così avevo fatto ma non riesco a costruire la query nel modo giusto.Sopra ho scritto di nuovo quello che mi serve in modo più chiaro spero...

  10. #10
    prova questa cosa:

    codice:
    str="Oggetto1-Parte1-Azione1-Parte4-Azione2-Oggetto5-Oggetto9-Parte2"
    
    
    dim oggetto,parte,azione,arr_split,sql,stopper,voltaogg,voltapar,voltazio,h,i,f
    
    oggetto="oggetto"
    parte="parte"
    azione="azione"
    
    arr_split=split(str,"-")
    
    sql="select * from tabella where"
    
    voltaogg=0
    stopper=false
    for i=0 to ubound(arr_split)
    
    if ucase(left(arr_split(i),len(oggetto)))=ucase(oggetto) then
    
    if voltaogg>0 then sql=sql & " or"
    
    voltaogg=voltaogg+1
    
    sql=sql & " oggetto=" & arr_split(i)
    
    'cerco tutte le parti
    h=i+1
    voltapar=0
    stopper=false
    while (h<=ubound(arr_split)) and stopper=false
    
    if ucase(left(arr_split(h),len(oggetto)))=ucase(oggetto) then 
    stopper=true
    if voltapar>0 then sql=sql & ")": voltapar=0
    end if
    
    if ucase(left(arr_split(h),len(parte)))=ucase(parte) then
    
    if voltapar=0 then sql=sql & " and ("
    if voltapar>0 then sql=sql & " or "
    
    sql=sql & "parte=" & arr_split(h)
    
    
    voltapar=voltapar+1
    
    if h=ubound(arr_split) and voltapar>0 then sql=sql & ")"
    
    end if
    
    h=h+1
    wend
    
    'cerco tutte le azioni
    f=i+1
    voltazio=0
    stopper=false
    while (f<=ubound(arr_split)) and stopper=false
    
    if ucase(left(arr_split(f),len(oggetto)))=ucase(oggetto) then 
    stopper=true
    if voltazio>0 then sql=sql & ")":voltazio=0
    end if
    
    if ucase(left(arr_split(f),len(azione)))=ucase(azione) then
    
    if voltazio=0 then sql=sql & " and ("
    if voltazio>0 then sql=sql & " or "
    
    sql=sql & "azione=" & arr_split(f)
    
    voltazio=voltazio+1
    
    if f=ubound(arr_split) and voltazio>0 then sql=sql & ")"
    end if
    
    f=f+1
    wend
    
    end if
    
    next
    
    response.write sql

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.