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

    ristrutturare tabella db

    oggi mi capitano tutte cose strane:

    ho un db access così strutturato

    codcli
    descrizione
    titolo1
    titolo2
    titolo3


    sotto i campi titolo sono indicate il numero delle copie

    ho bisogno di ristrutturare e ricreare(ovviamente in asp) una nuova tabella così

    codicecli
    descrizione
    titolo
    copie

    devo quindi var diventare i nomi capo titolo1 titolo2 etc
    in valori del campo titolo
    e nella colonna copie
    inserire i totali per ogni titolo

    come posso procedere
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  2. #2
    crea uno script che si collega alla prima tabella ed estrae tutti i campi

    nel campo titolo della seconda i fai finire tutti i titoli (1, 2, 3) e nel campo copie ci fai finire il risultato di una select count

    prova un po

  3. #3
    come posso estrarre i nomi campo?
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  4. #4
    il problema è che ho 126 campi titolo quindi la cosa è più complicata...
    (chi ha fatto la tabella ha in pratica invertito la logica)
    ho pensato di:

    1) collegarmi alla tabella formalmente scorretta (tab1)
    2) creare una tabella formalmente corretta (tab2) all'interno dello stesso db

    aprire il data base
    contare il numero dei campi della prima tabella (tab1)

    inserire un ciclo del tipo

    per ogni nome campo fino alla fine del numero dei campi

    inserisci come valore il nome campo nella tabella 2(tab2)

    ma non so come fare questo ciclo......ho visto che esiste la possibilità di ottenere il nome_campo così:
    Rs("COLUMN_NAME")

    ma non riesco a metterla in pratica


    mi potete aiutare?
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  5. #5
    se ho capito.. qualcosa del genere?
    codice:
    ...
    dim sql, i, idcli, descrizione
    
    sql = "SELECT * FROM tabella"
    rs.open sql, conn
    
    do while not rs.eof
        idcli = rs("idcli")
        descrizione = Replace(rs("descrizione"), "'", "''")
    
        For i = 2 To rs.Fields.Count -1 
            sql = "INSERT INTO nuovaTabella (idcli, descrizione, titolo, copie) VALUES (" & _
                idcli & ", '" & _
                descrizione & "', '" & _
                rs.fields(i).Name & "', " & _
                rs(i) & ")"    
          
            conn.execute(sql)
        next 'i
    
    rs.movenext
    loop
    
    rs.close: set rs=nothing
    ...
    edit: avevo dimenticato il -1 sul conteggio campi
    xxx

  6. #6
    si dovrebbe andare....quindi

    non ho ben capito come inizi il ciclo

    For i = 2 To rs.Fields.Count -1
    perchè -1?



    comunque grazie
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  7. #7
    potrebbe avere bisogno di una sistemata (apici, virgolette mancanti, ecc).

    presunto che la tabella vecchia sia fatta così:
    idcli
    descrizione
    titolo1
    titolo2
    titolo3
    titolo4
    ...

    e che il contenuto dei campi titolo sia numerico, il ciclo for dentro il do while parte da 2 per scorrere la lista dei campi (0 è idcli, 1 è descrizione) e arriva fino a fields.count -1 perché il count restituisce il numero dei campi, ma per scorrerli si deve partire a contare da 0 anziché da 1 e si arriva quindi al numero campi -1
    (cioè, se il numero dei campi è n, li scorro da 0 a n-1)
    xxx

  8. #8
    grazie
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  9. #9
    questo legge :

    rs(i)

    il record set
    orginariamente inserito nei campi titolo1...titolo2 etc?
    Ci sedemmo dalla parte del torto visto che tutti gli altri posti erano occupati."
    [Bertolt Brecht]

  10. #10
    se tu fai una
    SELECT idcli, descrizione, titolo1, titolo2 FROM tabella

    rs(2) legge il valore di titolo1
    xxx

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.