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

    Problema inserimento data da importazione file di testo

    Salve ragazzi sto importando dei dati dentro sql server 2005 da un file txt. Funziona tutto ad eccezione dell'inserimento della da che nel file è nel formato 16-12-09.
    Il campo nel db è "datetime".
    Questo è il codice:
    codice:
    <%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>
    
    <%
     Dim conn, fs, objFile, objFileTextStream, i, strSQL, fsoMyFile 
     Dim strLine, strLinePart, strSaluto, strNome, strCognome, strNumeroSocio, strIndirizzo, strCap, strCitta, strProvincia, strPrefisso, strTelefono, strEmail, strEta, strModello, strData, strDataIns, strDataInsDef, strMatricola1, strMatricola2, strRivenditore, strLocalita, strCommenti, strPrivacy, strEta2 
      Set fs = Server.CreateObject("Scripting.FileSystemObject") 
     Set objFile = fs.OpenTextFile(Server.MapPath("test.TXT"), 1)
     
    conta=0
     Do While objFile.AtEndOfStream <> True 
       strLine = objFile.ReadLine
       if conta>0 then
       strLinePart = split(strLine, vbTab) 
       for i = 0 TO UBound(strLinePart) 
         If i = 0 Then 
           strSaluto = Trim(strLinePart(i)) 
         ElseIf i = 1 Then 
           strNumeroSocio = Trim(strLinePart(i)) 
         ElseIF i = 2 Then 
           strNome = Trim(strLinePart(i))
    	 ...... 
         strModello = Trim(strLinePart(i))
    	 ElseIF i = 13 Then 
         strData = Trim(strLinePart(i)) 	 .........
    	 ElseIF i = 20 Then 
         strEta2 = Trim(strLinePart(i))      
    	End If 
       Next   
       'response.write strLine & "</br>"
       strIndirizzo=Replace(strIndirizzo,"'"," ")
       strData=Replace(strData,"-","/")
       
    strDataIns = CDate(strData)
    strDataInsDef = kaos_date("%y/%M/%D", strDataIns)
    response.Write strDataInsDef 
      ' strNumeroSocio = int(strNumeroSocio) 
       
       Set conn = Server.CreateObject("ADODB.Connection") 
       conn.Open "Driver={SQL Server}; Server=localhost; Database=xxxx; Uid=xxxx; Pwd=xxxx;"
       SqlInsert = "SELECT numeroSocio, nome, cognome FROM dimension WHERE numeroSocio = '" & strNumeroSocio & "' AND nome = '" & strNome & "' AND cognome = '" & strCognome & "'"
       Set rsInsert = Conn.Execute(SqlInsert)
       If rsInsert.EOF Then
       strSQL = "INSERT INTO dimension (numeroSocio, saluto, nome, cognome, indirizzo, cap, citta, provincia, prefisso, telefono, email, eta, modello, data, matricola1, matricola2, rivenditore, localita, commenti, privacy, eta2) Values('"&strNumeroSocio&"', '"&strSaluto&"','"&strNome&"','"&strCognome&"','"&strIndirizzo&"','"&strCap&"','"&strCitta&"','"&strProvincia&"','"&strPrefisso&"','"&strTelefono&"','"&strEmail&"','"&strEta&"','"&strModello&"',#"&strDataInsDef&"#, '"&strMatricola1&"','"&strMatricola2&"','"&strRivenditore&"','"&strLocalita&"','"&strCommenti&"','"&strPrivacy&"','"&strEta2&"')" 
       response.write strSQL
       'conn.Execute strSQL 
       Set RECdown = CreateObject("ADODB.Recordset")
       set RECdown = conn.execute(strSQL) 
       Else
       Response.Write strNumeroSocio & "" & strNome & "" & strCognome
       Response.Write(" è già presente nel database.
    ")
       End If
       rsInsert.Close
       Set rsInsert = Nothing
       end if
     conta=conta+1
     Loop 
       
     objFile.Close 
     Set objFile = Nothing 
     Set fs = Nothing 
     conn.Close 
     Set conn = Nothing 
    
    %>
    L'errore che ho è il seguente:
    codice:
    INSERT INTO dimension (numeroSocio, saluto, nome, cognome, indirizzo, cap, citta, provincia, prefisso, telefono, email, eta, modello, data, matricola1, matricola2, rivenditore, localita, commenti, privacy, eta2) Values('xxx', 'xxxx','xxx','xxxx','xxx','xxxx','xxxx','xx','xxxx','xxxx','xxxx','26-34','xxxx',#27/11/09#, 'xxxx','','xxxx','xxxxx','xxxxx','xxxx','xxx') 
    Microsoft OLE DB Provider for ODBC Drivers error '80040e14' 
    
    [Microsoft][ODBC SQL Server Driver][SQL Server]The name "#27" is not permitted in this context. Valid expressions are constants, constant expressions, and (in some contexts) variables. Column names are not permitted.
    Non capisco perchè mi da errore, la query di inserimento sembra corretta.
    :master:
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  2. #2
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    In sql Server al posto di # devi mettere l'apice ' quando inserisci la data.

    Roby

  3. #3
    Roby avevo già provato ma mi restituisce il seguente errore:

    "The conversion of a char data type to a datetime data type resulted in an out-of-range datetime value."

    La query invece sembra corretta:
    INSERT INTO dimension (numeroSocio, saluto, nome, cognome, indirizzo, cap, citta, provincia, prefisso, telefono, email, eta, modello, data, matricola1, matricola2, rivenditore, localita, commenti, privacy, eta2) Values('xxx', 'xxxx','xxx','xxxx','xxx','xxxx','xxx','xx','xxxx' ,'xxxx','xxxx','xxxx','xxxxx','27/11/09','xxxxx','','xxxx','xxxx','xxxxx','xxxx','xxxx' )

    Forse perchè nella query la data è nel formato gg/mm/aa mentre il db la vuole in gg/mm/aaaa?

    Se fosse così come posso trasformare la parte relativa all'anno?
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  4. #4
    Moderatore di ASP e MS Server L'avatar di Roby_72
    Registrato dal
    Aug 2001
    Messaggi
    19,559
    codice:
    strData = "27/11/09"
    strData = CDate(strData)
    response.write year(strData)
    Cosa ti stampa?

    Roby

  5. #5
    Mi stampa 2027.
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  6. #6
    siamo alle solite! la data va inserita col formato MM/DD/YYYY. Punto.

  7. #7
    Optime,

    ho provato a inserirla in quel formato ma la restituisce i nquesto modo

    11/09/27 anzichè 27/11/09.

    Ho modificato così lo script:
    strDataIns = CDate(strData)
    strDataInsDef = kaos_date("%M/%D/%y", strDataIns)
    response.Write strDataInsDef
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  8. #8
    e per fortuna che ti ho detto mm/dd/yyyy... perché usi mm/dd/yy ???

  9. #9
    Scusa Optime ma nella funzione kaos date la "y" minuscola ti da l'anno con sole due cifre, la "Y" maiuscola ti da l'anno con 4 cifre.

    Infatti se metto:

    strDataInsDef = kaos_date("%M/%D/%Y", strDataIns)

    mi restituisce

    11/09/2027.

    quando invece dovrebbe essere 27/11/2009
    <a href="http://www.robertodidonato.it" target="_blank">Roberto Di Donato</a>

  10. #10
    1. non so cosa sia kaos_date
    2. non so cosa valga strDataIns

    ci illumini?

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.