+ Rispondi al messaggio
Visualizzazione dei risultati da 1 a 4 su 4

Adodb.Recordset - Copiare in un altro recordset solo alcuni campi

  1. #1
    L'avatar di marco13
    marco13 non è in linea Scolaretto
    Ciao a tutti,
    ho la necessità di copiare da un adodb.recordset a un altro solo alcuni campi: non posso limitarlo dal principio perchè altrimenti dovrei cambiare tutto il codice del programma.
    Il recordset di origine ricava i dati con una query su db Oracle ed è già formattato, poi viene loopato riga per riga per creare un file excel.
    Il mio intento è di evitare il loop e fare un recordset solo con le colonne che mi interessano con la funzione CopyFromRecordset in modo di essere più veloce.
    Il recordset di origine è questo:
     With RsExcel
        .Fields.Append "Pippo", adBigInt
        .Fields.Append "Pluto", adVarChar, 100, adFldIsNullable
        .Fields.Append "Topolino", adVarChar, 100, adFldIsNullable
        .Fields.Append "Paperino", adVarChar, 255, adFldIsNullable
        .Fields.Append "Minni", adVarChar, 20, adFldIsNullable
        .Fields.Append "Qui", adVarChar, 20, adFldIsNullable
        .Fields.Append "Quo", adDate
        .Fields.Append "Qua", adVarChar, 20, adFldIsNullable
        .Open
      End With '
    
    Da questo devo selezionarne solo alcuni, tipo Paperino, Qui, Quo, Qua: come posso fare? Ho cercato un po' online, ma non ho trovato (o capito) soluzioni.

    Grazie,
    Marco
    ℹ️ Leggi di più su marco13 ...

  2. #2
    L'avatar di gibra
    gibra non è in linea Very Important Person
    Cambi la query che estrai i dati da Oracle, o ne crei un'altra ad hoc, oppure modifichi il loop.
    Non vedo altre soluzioni.
    ℹ️ Leggi di più su gibra ...

  3. #3
    L'avatar di marco13
    marco13 non è in linea Scolaretto
    Ciao Gibra,
    purtroppo non posso cambiare nè la query nè crearne un'altra ad hoc perchè si trova innestata in varie funzioni ed è un casino estrapolarla.
    Come potrei modificare il loop per creare il file excel?
    Tieni conto che il file può essere lungo anche migliaia di righe ed è veramente lento a girarlo tutto.
    In alternativa avevo pensato di fare un recordset con solo alcuni campi e quindi copiare dal recordset di origine solo le informazioni che mi interessano.
    ℹ️ Leggi di più su marco13 ...

  4. Ciao,
    è da una vita che non uso più adodb, per cui non so se funzionerà;
    ma per la serie "tentar non nuoce" potresti provare :

    1)
    'creo un clone del recordset originale
    set recordsetClone = recordsetOriginale.clone

    2)
    'disconnetto il clone dalla sua connection ;
    'N.B verifica che non disconnetta anche l'originale ... altrimenti ferma tutto
    set recordsetClone.ActiveConnection =nothing

    3)
    'cancello i campi di recordsetClone che non mi interessano... pure qui, ferma tutto se si cancellano i field anche dall'originale
    recordsetClone.Fields.Delete(...)

    4) Faccio quello che devo con il clone

    HTH
    Ultima modifica di sspintux; 25-09-2020 22:53 
    ℹ️ Leggi di più su sspintux ...

+ Rispondi al messaggio

Potrebbero interessarti anche ...

  1. delete su recordset ADODB in memoria
    Da muttley005 nel forum Microsoft Access
    Risposte: 18
    Ultimo Post: 19-06-2015, 15:23
  2. filtro su recordset ADODB
    Da muttley005 nel forum Microsoft Access
    Risposte: 5
    Ultimo Post: 29-05-2015, 13:45
  3. Trova un dato da un recordset ed inserisci in altro recordset
    Da roccolamann nel forum Microsoft Access
    Risposte: 1
    Ultimo Post: 05-06-2014, 12:04
  4. Problema ADODB Recordset
    Da cadthac76 nel forum Microsoft Word
    Risposte: 6
    Ultimo Post: 03-10-2008, 14:16
  5. ADODB.Recordset (0x800A0BCD)
    Da delfinista nel forum ASP 3, ASP .Net
    Risposte: 1
    Ultimo Post: 15-06-2005, 10:09