2017-07-25 2 views
1

Je stocke une valeur de temps (par exemple 18:30 - format Espagne) dans une base de données sql-server 2014 à partir d'un Le champ (dtHoraInicio) est défini comme (temps (0), NULL) Les insertions fonctionnent et les données sont bien stockéesASP classique: tentative d'affichage d'une heure stockée dans un champ de serveur SQL (time (0), NULL)

Dans ma page Web j'essaie juste de montrer la valeur:

response.write oRSC("dtHoraInicio") 'where oRSC is the recordset 

et je reçois cette erreur:

Microsoft Cursor Engine error '80020009' 

Multiple-step operation generated errors. Check each status value

J'ai changé la façon d'accéder aux données renvoyées à ceci:

Conexion = "Driver={SQL Server};Server=xxxxxxxxxxx;Initial Catalog=yyyyyyyy;User Id=zzzzzzzz;Password=aaaaaaaaaaa" 

Set objConexion = Server.CreateObject("ADODB.Connection") 
objConexion.CommandTimeout=120 
objConexion.ConnectionTimeOut = 120 
objConexion.Open Conexion 

Set oRSC=CreateObject("ADODB.Recordset") 
oRSC.ActiveConnection = objConexion 
oRSC.CursorType = 0 ' 1 adOpenKeyset 
oRSC.CursorLocation = 3 'adUseClient 
oRSC.LockType = 3 'adLockOptimistic 
oRSC.Source = FiltrarCadena(ssqlC) 
oRSC.Open 

'------------------------ 
response.write oRSC("dtHoraInicio") 
'------------------------ 

J'ai eu cette nouvelle erreur:

ADODB.Recordset error '800a0bb9' 

Arguments are of the wrong type, are out of acceptable range, or are in conflict with one another.

Si je tente de l'exécuter dans un environnement local/test, il fonctionne parfaitement , se connectant également de la base de données de production locale est très bien, mais dans le moment, je télécharge le fichier en production, le code échoue. Donc je ne sais pas si c'est un problème du code ou si cela vient de la configuration de la base de données.

Si j'exécute la requête dans sql-server Management Studio il fonctionne parfaitement et montre toutes les données sans problèmes.

Une idée?

Merci beaucoup à l'avance

+0

Désolé, la connexion utilisée en production est: "Driver = {SQL Server}; fournisseur = SQLNCLI11.1; xxxxxxxxxxx; database = xxxxxxxx; uid = xxxxxxxx; pwd = xxxxxxxx" et de local I ' m se connecter sans fournisseur et ça marche, mais l'équipe informatique me dit qu'ils ne peuvent pas changer le mode de connexion, alors ma question est pourquoi le Tim Le type déposé n'est pas reconnu avec OLEDB? merci – euno

+1

Nous l'avons eu, enfin nous avons converti le champ de temps à varchar dans la requête avant de le montrer sur la page. Vous pouvez supprimer cette question si vous voulez (je n'ai pas trouvé le chemin) ou le laisser, peut-être que c'est utile pour quelqu'un. Cordialement. – euno

+0

Ceci est une question et une réponse valides, s'il vous plaît poster la solution comme réponse automatique. :) –

Répondre

0

Solution:

SELECT convert(varchar(5), TIME) as TIME from <table> 

Où "TIME" est (temps (0) null) type de champ et je convertir en varchar (5), car en Espagne le temps Le format est hh: mm