Pagina 1 di 4 1 2 3 ... ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 35
  1. #1
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    32

    Problemone ASP-Excel (Urgente please!)

    Oggi al lavoro ci ho sbattuto la testa per un paio d'ore senza risultato
    Vi descrivo le mie sfighe.
    Devo leggere dei dati da un foglio excel e poi buttarli in una tabella di SQLServer e fin qui tutto bene:
    faccio la mia connessione (Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & PathNomeFile & ";Extended Properties=""Excel ", faccio la mia query di estrazione dei dati, butto tutto in un recordset e inserisco riga x riga in tabella. FIN QUI NO PROBLEMA

    QUANDO A UN CERTO PUNTO..

    ..mi accorgo che il mio file Excel ha 200 righe in più della mia tabella
    La mia attenzione si ferma sulla colonna ISBN che contiene i codici del mio insieme di libri. La maggiorparte sono numerici mentre alcuni contengono una X in fondo.
    Ebbene quelli con la X in fondo vengono visti da ASP come vuoti...

    QUINDI COMINCIANO I MIEI DISPERATI TENTATIVI:
    • che sia un problema di formattazione dei dati del mio foglio excel? NO, anche se metto il formato testo nella colonna EXCEL ASP se ne fotte
      sintesi delle mie ricerche su google: praticamente cosa fa OLEDB? Esamina tutta la colonna (o secondi alcuni i primi 8 campi) guardando che tipo di dati contiene: fa una media e stabilisce il tipo di dato (nel mio caso numerico per cui ignora i testuali!)

    SOLUZIONI PROPOSTE:
    [list=1]usare hdr=yes;IMEX=1 nella stringa di connessione => Ad ASP pare non piaccia
    cambiare la chiave di registro che indica su quanti valori calcolare la media => non funge
    soluzione alternativa: se con una macro inserisco un carattere qualunque davanti a tutti i dati della mia famigerata colonna ASP riconosce tutti i dati come testo ho provato e funziona tutto! E allora posso fare anche lo stesso con ASP no? QUI si smorza definitivamente il mio entusiasmo: quando faccio CreateObject("Excel.Application") per andare a scrivere su Excel ASP mi dice che l'ActiveX non riesce a creare l'oggetto... [/list=1]
    E QUI ALZO BANDIERA BIANCA...

    QUALCUNO SA AIUTARMI?
    Se non riesco entro domani sono fottuto..

  2. #2
    prova a mettere già nella prima riga un codice con la X in fondo

  3. #3
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    32
    grazie x la celerità optime!
    purtroppo però ho già provato anche questa..
    pensa quanto ho "viaggiato": preso atto dal sito di Microsoft che Jet.OLE DB dovrebbe fare effettivamente una media dei primi 8 campi di ogni colonna EXCEL per poi stabilire il tipo di dato ho provato a modificare anche la chiave di registro impostando a 1 il numero di campi su cui fare calcolare la media ma anche in questo caso senza risultato..

    p.S: il problema è che con una soluzione "a manazza" tipo con una macro come ho descritto sopra che inserisce un carattere davanti ai campi di tutta la colonna funziona tutto ok ma poichè non è un lavoro che posso delegare al cliente devo automatizzare tutto con ASP..

    MERDA

  4. #4
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    che tipo di campo è la colonna ISBN ?

  5. #5
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    32
    La colonna ISBN così come tutte le colonne del mio foglio Excel sono settate in formato testo.
    Il problema della colonna ISBN è che la maggior parte dei dati contenuti è di tipo numerico:

    89999992278
    67809090803
    49999999999

    mentre alcuni campi hanno invece valori di tipo "misto":

    8999777777X

    Ebbene Jet.OLE DB considera questi valori come nulli in quanto come ho scritto sopra (così riportano anche le specifiche di Microsoft) Jet.OLE DB vede che nella colonna la maggior parte dei dati è numerica e assume implicitamente questo come formato di lettura, non riconoscendo quindi dati del tipo riportato sopra (es:8999777777X).

    La soluzione migliore sarebbe aggiungere hdr=yes;IMEX=1 nella stringa di connessione al foglio Excel (che a quanto pare serve proprio x disabilitare questo modo arbitrario con cui Jet.OLE DB interpreta la colonne miste) ma ho provato e a me non funziona.
    Se a qualcuno per caso è riuscito a farlo funzionare lo prego di farmi sapere.

    In alternativa si potrebbe aggirare il problema facendo con ASP un update della mia colonna ISBN in modo da avere tutti i campi in formato testo e poi eliminando il carattere aggiuntivo in fase di inserimento nel database. Ma purtroppo - porca zozza - sembra che l'istruzione chiave per accedere al foglio Excel ovvero CreateObject("Excel.Application") proprio non abbia voglia di funzionare in quanto mi viene segnalato come errore che l'ActiveX non riesce a creare l'oggetto. Se qualcuno sa dirmi una dritta per aggirare questo errore potrei risolvere con questo trucchetto.

    Altrimenti sono bloccato.

    Chiunque fosse in grado di darmi una mano o ancora meglio abbia già superato in passato questo tipo di problema godrà della mia stima e della mia riconoscenza in eterno!!!

  6. #6
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    lavorare con csv no ?

  7. #7
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    32
    grazie agenti per il suggerimento.
    non sono pratico del formato csv in che modo potrebbe aiutarmi a risolvere il mio problema?
    intendi convertire il mio file excel in un csv e poi lavorare con gli split?

    comunque non riesco ad arrendermi deve per forza esistere una soluzione anche con excel.. sì ma quale? porca zozza

  8. #8
    Utente di HTML.it
    Registrato dal
    Feb 2005
    Messaggi
    1,150
    Scusate se mi intrometto, nella discussione.

    Io lavoro su Oracle e se avessi avuto il tuo problema, sarei passato prima per cvs (come dice agenti) e poi utilizzato il comando sql*loader per fare il caricamento sul DB.

    Non conosco SqlServer, ma forse ci può essere un comando simile per caricare i dati. Ora faccio una verifica tra i miei colleghi più esperti su SqlServer e ti faccio sapere.

    Ciao ciao

  9. #9
    Utente di HTML.it L'avatar di agenti
    Registrato dal
    Feb 2002
    Messaggi
    2,427
    http://www.connectionstrings.com/?carrier=textfile


    potresti provare a fare una connessione...

    usando il formato csv

    certo ci sarà un soluzione anche in excel...

  10. #10
    Utente di HTML.it
    Registrato dal
    Oct 2005
    Messaggi
    32
    grazie mille ragazzi mi sono appena iscritto nel forum e non pensavo che fosse così vivo!
    grandissimi

    ormai è una questione di principio ce la devo fare anche con excel!

    qualcuno mi sa dire qualcosa su questo errore?

    Errore di run-time di Microsoft VBScript error '800a01ad'

    Il componente ActiveX non può creare l'oggetto: 'Excel.Application'

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.