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

    estrazione nell'estrazione

    Non è un gioco di parole ma è un'autentica richiesta, ho una tabella con con un id univoco, devo estrarre dei clienti(cantieri), qui è tutto semplice, il problema è che ogni cantiere potrebbe avere un'importatore , fino a 4 , i campi importatori sono identificati con impo1, impo2,impo3,impo4 e sono mumerici,in questi campi inserisco l'id che identifica l'importatore ma questo id non è presente in un'altra tabella ma nella stessa dei cantieri.Faccio una sintesi con dei parametri

    id |impo1|impo2|impo3|impo4| cantiere | indirizzo | cap | citta
    1 | 5 | 7 | null | null |benetau | xxxxx |xxx | xxx
    2 | 5 | 1 | null | null |fiart | xxxxx | xxx | xxx
    3 | 6 | 2 | null | null |jenneau | xxxxx |xxx | xxx

    se devo estrarre tutti i cantieri che hanno un importatore è facile , controllo se il campo impo1 etc no siano vuoti io , invece, ho bisogno di un'area ripetuta nella quale estrarre tutti che i cantieri che m'interessano seguiti dal loro importatore ( con tutti i dati), perciò il risultato dell'esempio sopra è:

    tutti i dati dell'id 1
    tutti i dati dell'id 5 (impo1)
    tutti i dati dell'd 7 (impo2)
    tutti i dati dell'id 2
    tutti i dati dell'id 5 (impo1)
    tutti i dati dell'id 1 (impo2)
    tutti i dati dell'id 3
    tutti i dati dell'id 6 (impo1)
    tutti i dati dell'id 2 (impo2)

    spero stanto di essere stato chiaro e che qualcuno mi dia una risposta "pratica"

  2. #2
    ma l'importatore può essere a sua volta importato?

  3. #3
    purtroppo si anche se è una caso raro, in effetti gli importatori possono essere anch'essi dei cantieri,ciao

  4. #4
    così dovrebbe andare però questo script non mi piace per niente, è troppo poco performante...

    codice:
    <%
    set conn=server.CreateObject("adodb.connection")
    conn.open stringa_connessione
    
    sql="select * from tabella order by id asc"
    
    set rs=Server.CreateObject("adodb.recordset")
    rs.open sql,conn,1,1
    
    set rs1=Server.CreateObject("adodb.recordset")
    
    dim arrImpo(4)
    while not rs.eof
    
    '**************** Stampo i dati del record corrente
    response.Write rs("id") & " etc etc"
    
    
    '**************** ricavo gli importatori
    arrImpo(0)=rs("impo1"):arrImpo(1)=rs("impo2"):arrImpo(2)=rs("impo3"):arrImpo(3)=rs("impo4")
    
    for each importatore in arrImpo
    if trim(importatore) & "[]"<>"[]" then
    
    rs1.open "select * from tabella where id=" & importatore,conn,1,1
    if not rs1.eof then
    
    '*********Stampo l'importatore
    
    end if
    rs1.close
    end if
    next
    
    rs.movenext
    wend
    
    rs.close: set rs=nothing
    set rs1=nothing
    conn.close: set conn=nothing
    
    
    
    %>
    forse si poteva fare di meglio usando il filter sul recordset, ma non è una cosa che abbia mai usato molto e non sono molto esperto a riguardo

  5. #5
    mi fai sapere se questo funziona?

    codice:
    dim r_att
    
    set conn=server.CreateObject("adodb.connection")
    conn.open stringa_connessione
    
    sql="select * from tabella order by id asc"
    
    set rs=Server.CreateObject("adodb.recordset")
    rs.open sql,conn,3,3
    
    r_att=1
    
    dim arrImpo(4),flag
    
    while not rs.eof 'scorro tutto il rcordset
    
    '**************** Stampo i dati del record corrente
    response.Write rs("id") & " etc etc"
    
    
    '**************** ricavo gli importatori
    arrImpo(0)=rs("impo1"):arrImpo(1)=rs("impo2"):arrImpo(2)=rs("impo3"):arrImpo(3)=rs("impo4")
    
    
    for each importatore in arrImpo  '******* scorro tutti i campi importatore
    
    if trim(importatore) & "[]"<>"[]" then    'se è importato da qualcuno
    
    flag=1 'sto applicando un filter
    
    rs.filter="id=" & importatore  'filtro il recordset e mi prendo il mio importatore
    
    if not rs.eof then 
    '*********Stampo i dati l'importatore
    end if
    
    rs.filter="" 'ritono all'insieme di partenza
    end if
    next
    
    if flag=1 then rs.move r_att: flag=0  'se ho filtrato mi riposiziono al record attuale
    
    r_att=r_att+1
    rs.movenext
    wend
    
    rs.close: set rs=nothing
    conn.close: set conn=nothing
    grazie

  6. #6
    scusa ho sbagliato è così:
    codice:
    rs.open sql,conn,3,3
    
    r_att=0
    altrimenti salta un record


    EDIT: cmq sono contento, con una tabella di esempio mi sono accorto che funziona il secondo script e dovrebbe essere molto + leggero del primo in esecuzione

  7. #7
    devo dirti la verità , il primo l'ho finito adesso e mi sembra che vada tutto bene e di questo ti ringrazio, cmq proverò anche il secondo, ti faccio un ulteriiore domanda , se voglio che mi stampi a video una riga per volta mi basta mettere il carattere vbcrlf e risolvo?

    ciao e grazie

  8. #8
    questo è lo scipt che ho modificato per le mie esigenze: confronto i dati anche con un valore in un'altra tabella:



    <%
    set conn=server.CreateObject("adodb.connection")
    conn.open MM_advmarea_STRING
    sql="select * FROM clienti,barche.tab_barche_new WHERE tab_barche_new.tag = 'tag' AND clienti.cust_id=tab_barche_new.id_cantiere group by cust_id order by full_name"

    set rs=Server.CreateObject("adodb.recordset")
    rs.open sql,conn,1,1

    set rs1=Server.CreateObject("adodb.recordset")

    dim arrImpo(4)
    while not rs.eof

    '**************** Stampo i dati del record corrente
    response.Write rs("full_name") & " " & rs("addr") & " " & rs("zip") & " " & rs("city") & " " & rs("telefono_amm_vo") & " " & rs("fax") & " " & rs("email") & " " & rs("http") & " " & vbcrlf


    '**************** ricavo gli importatori
    arrImpo(0)=rs("impo1"):arrImpo(1)=rs("impo2"):arrI mpo(2)=rs("impo3"):arrImpo(3)=rs("impo4")

    for each importatore in arrImpo
    if trim(importatore) & "[]"<>"[]" then

    rs1.open "select * from clienti where cust_id=" & importatore,conn,1,1
    if not rs1.eof then

    '*********Stampo l'importatore
    response.Write rs1("full_name") & " " & rs1("addr") & " " & rs1("zip") & " " & rs1("city") & " " & rs1("telefono_amm_vo") & " " & rs1("fax") & " " & rs1("email") & " " & rs1("http") & " " & vbcrlf

    end if
    rs1.close
    end if
    next

    rs.movenext
    wend

    rs.close: set rs=nothing
    set rs1=nothing
    conn.close: set conn=nothing



    %>

  9. #9
    Originariamente inviato da malecce
    devo dirti la verità , il primo l'ho finito adesso e mi sembra che vada tutto bene e di questo ti ringrazio, cmq proverò anche il secondo, ti faccio un ulteriiore domanda , se voglio che mi stampi a video una riga per volta mi basta mettere il carattere vbcrlf e risolvo?

    ciao e grazie
    guarda ti assicuro che il secondo metodo è migliore...tanto i punti dove stampa i dati sono uguali al primo, quindi ci metti un attimo a cambiare lo script


    per stampare su una riga puoi fare:
    codice:
    response.write "id:" & rs("id") & " campo1:" & rs("campo1") & ...... & "
    "
    con
    gli dici di andare a capo

  10. #10
    grazie, provo

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.