Pagina 1 di 3 1 2 3 ultimoultimo
Visualizzazione dei risultati da 1 a 10 su 30
  1. #1
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870

    Trasformazione campo in access

    Buongiorno a tutti...
    la mia perplessità è la seguente:

    tramite asp importo un file excel in un database e fin qui tutto ok;

    per necessità sopraggiunte dovute alla esatta compilazione ho dovuto aggiungere al modello del file excel, e dunque anche alla tabella in access, un campo che scrivo nel file excel con questo formato ID-25.

    Nella tbl di access il campo in questione chiamata ID_MS è stato previsto come numerico, per cui quando importo con asp in access il sistema va in errore perchè gli arriva il parametro ID-25 invece che solo il numero 25.

    Quello che in realtà serve importare in access da excel è solo il numero (in questo caso 25)... como posso risolvere questo fastidioso problema?

    Grazie.

  2. #2
    Utente bannato
    Registrato dal
    Nov 2002
    Messaggi
    661
    dipende da come è strutturato il cod, ma in linea di massima ti consiglio di fare un replace, qualcosa del tipo:

    datoexcel=replace(datoexcel,"ID-","")
    datoaccess=cint(datoexcel)

  3. #3
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Grazie, il code per l'importazione è questo (molto semplificato):
    codice:
    .........
    Set Conn = GetConnection 
          Set RS = Server.CreateObject("ADODB.Recordset")
          Set oRs = Server.CreateObject("ADODB.Recordset")
      
      oRS.Open "tabella", GetConnection, 2, 2
    
      Rs.Open "SELECT * from [Foglio1$]", "DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath(DestinationFileName)
          
       
       Do Until Rs.Eof    
       
       If Rs("ID") <> "" Then
       
        oRS.AddNew
        
        oRs("ID") = Rs("ID")  
        oRs("ID_MS") = Rs("ID_MS")                            
        oRs("NOME")= Rs("COGNOME")
        oRs("COGNOME") = Rs("COGNOME")                    
        oRs("DATA_DI_NASCITA")= Rs("DATA_DI_NASCITA")
              
        oRs.Update
        
             
       else ............

  4. #4
    Utente bannato
    Registrato dal
    Nov 2002
    Messaggi
    661
    prova cosi':

    codice:
    Set Conn = GetConnection 
          Set RS = Server.CreateObject("ADODB.Recordset")
          Set oRs = Server.CreateObject("ADODB.Recordset")
      
      oRS.Open "tabella", GetConnection, 2, 2
    
      Rs.Open "SELECT * from [Foglio1$]", "DRIVER=Microsoft Excel Driver (*.xls); DBQ=" & Server.MapPath(DestinationFileName)
          
       
       Do Until Rs.Eof    
       
       If Rs("ID") <> "" Then
       
        oRS.AddNew
        
        oRs("ID") = Rs("ID")
    '******presumo sia questo il campo incriminato*********
        oRs("ID_MS") = cint(replace(Rs("ID_MS"),"ID-",""))
    '******************************************************                            
        oRs("NOME")= Rs("COGNOME")
        oRs("COGNOME") = Rs("COGNOME")                    
        oRs("DATA_DI_NASCITA")= Rs("DATA_DI_NASCITA")
              
        oRs.Update

  5. #5
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    grazie, retituisce :
    Microsoft VBScript runtime error '800a000d'

    Type mismatch: 'cint'

  6. #6
    Utente bannato
    Registrato dal
    Nov 2002
    Messaggi
    661
    fai un response.write del campo di excel al naturale (senza il replace o cint) e vedi cosa restituisce.

  7. #7
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da gold
    fai un response.write del campo di excel al naturale (senza il replace o cint) e vedi cosa restituisce.
    se intendi questo, non va:
    codice:
    response.write oRs("ID_MS")

  8. #8
    Utente bannato
    Registrato dal
    Nov 2002
    Messaggi
    661
    in che senso non va? forse nello script c'è qualche altro errore che lo blocca ma il response.write deve funzionare..

    comunque l'importante è sapere cosa contiene il campo, se ad esempio contiene come dicevi tu "ID-25" allora la soluzione e quella postata prima, se invece dovesse essere qualcosa tipo "ID_25" allora devi cambiarla in cint(replace(rs("ID_MS"),"ID_25",""))

    oppure puoi provare a depurarla cosi :


    for i = 1 to len(rs("ID_MS"))
    if isnumeric(mid(rs("ID_MS"),i,1)) then
    campo=campo&mid(rs("ID_MS"),i,1)
    end if
    next
    ors("ID_MS")=cint(campo)

  9. #9
    Utente di HTML.it L'avatar di fraude
    Registrato dal
    Feb 2004
    Messaggi
    2,870
    Originariamente inviato da gold
    in che senso non va? forse nello script c'è qualche altro errore che lo blocca ma il response.write deve funzionare..
    non va nel senso che non stampa nulla... :master: il campo arriva come ID-25 e non stampa nulla per chè il access il campo è numerico mentre gli arriva come ID-25...

  10. #10
    Utente bannato
    Registrato dal
    Nov 2002
    Messaggi
    661
    allora ID-25 era una supposizione?

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.