Page 1 sur 1
[R] Erreur MSSQL 80020009
Posté : mar. 31 juil. 2012 18:28
par Sea
Voici mon erreur que je ne comprend pas trop une petite recherche sur google n'est pas plus concluante on trouve que des trucs en asp...
Je pense après que mon erreur viens du fais qu'il s'agit de chaîne de caractère mais pas sur :/
► Afficher le texte
Code : Tout sélectionner
$oMyError = ObjEvent("AutoIt.Error","MyErrFunc") ; Initialize a COM error handler
$constrim="DRIVER={SQL Server};SERVER=ip;DATABASE=db;uid=utilisateur;pwd=mdp;"
$adCN = ObjCreate ("ADODB.Connection") ;<==Create SQL connection
if @error Then
MsgBox(0, "ERROR", "Dafuck")
Exit
EndIf
$adCN.Open($constrim) ;<==Connect with required credentials
$adCN.execute("SELECT name FROM Character WHERE login_time > logout_time")
with $adCN
$count=0
while not .EOF
$var[$count]=.fields(0).value
$count+=1
.MoveNext
wend
endwith
_ArrayDisplay($var)
$adCN.Close ;==>Close the database
Func MyErrFunc()
InputBox("","",$oMyError.description)
Msgbox(0,"AutoItCOM Test","We intercepted a COM Error !" & @CRLF & @CRLF & _
"err.description is: " & @TAB & $oMyError.description & @CRLF & _
"err.windescription:" & @TAB & $oMyError.windescription & @CRLF & _
"err.number is: " & @TAB & hex($oMyError.number,8) & @CRLF & _
"err.lastdllerror is: " & @TAB & $oMyError.lastdllerror & @CRLF & _
"err.scriptline is: " & @TAB & $oMyError.scriptline & @CRLF & _
"err.source is: " & @TAB & $oMyError.source & @CRLF & _
"err.helpfile is: " & @TAB & $oMyError.helpfile & @CRLF & _
"err.helpcontext is: " & @TAB & $oMyError.helpcontext _
)
EndFunc
PS: la ligne 42 correspond à => $var[$count]=.fields(0).value
Re: [..]Erreur MSSQL 80020009
Posté : mar. 31 juil. 2012 22:38
par Sea
Problème résolu il fallait passer par un recordset et de ne pas foutre directement dans une array...
voici le code
Code : Tout sélectionner
$rs = ObjCreate("ADODB.RecordSet")
$rs.Open("SELECT name FROM [dbo].[Character] WHERE login_time > logout_time AND permission = 0", $adCN)
If $RS.RecordCount Then
$count=1
While Not $RS.EOF
$test = $rs.Fields("name").value
$var[$count] = $test
$var[0] = $count
$count+=1
$RS.MoveNext
WEnd
EndIf
_ArrayDisplay($var)
$rs.Close ;==>Close the database
$adCN.Close ;==>Close the database
Le seul problème c'est que je suis obligé de définir une taille de mon tableau au début par un nombre au "hasard" n'y a t'il pas moyen de recup le nombre de donné?(au pire je fais une requête count mais bon)
J'ai essayé avec $RS.RecordCount mais sa me renvoie -1 :/
Merci d'avance
EDIT : Bon j'ai réussi à faire ce que je veux mais bon c'est pas très propre de faire 2boucles mais bon si y'a que ça qui compte ^^'
Code : Tout sélectionner
If $RS.RecordCount Then
$count=1
While Not $RS.EOF
$count+=1
$RS.MoveNext
WEnd
ReDim $var[$count]
$var[0] = $count
$RS.MoveFirst
$count = 1
While Not $RS.EOF
$test = $rs.Fields("name").value
$var[$count] = $test
$var[0] = $count
$count+=1
$RS.MoveNext
WEnd
EndIf
Re: [..]Erreur MSSQL 80020009
Posté : mer. 01 août 2012 00:12
par jchd
Tu peux t'inspirer ou utiliser directement l'UDF jointe. L'idée est de récupérer directement le contenu du recordset dans un tableau (voir AdoSQL_GetData2d). Ces fonctions sont calquées sur l'UDF SQLite.
Re: [..]Erreur MSSQL 80020009
Posté : mer. 01 août 2012 00:37
par Sea
Merci beaucoup problème résolu =)