[..] Access - LoadFromFile

Aide et conseils concernant AutoIt et ses outils.
Règles du forum
.
Répondre
rollman
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mar. 10 févr. 2015 17:39
Status : Hors ligne

[..] Access - LoadFromFile

#1

Message par rollman »

Bonjour à tous,

J'ai un problème lors de la mise à jour d'une base access via autoit:

Dans cette base j'ai une table qui contient une colonne de type "Pièce jointe". Il s'agit en réalité d'un fichier.
Et je souhaiterais pouvoir l'alimenter via Autoit.

Actuellement voici ma fonction:

Code : Tout sélectionner

Func AjouterExecutionPlanifiee($Scenario,$Environnement,$DateDePassage,$fichier)

If Not FileExists($DBPath) Then
    Msgbox(0,"Pb Accès SQL","ano sql ouverture sgbd")
    Global $oCat = ObjCreate("ADOX.Catalog")
    $oCat.Create("Provider=" & $adoProvider & ";Data Source=" & $DBPath)
EndIf

$oConn = _ADO_Open($DBPath)
;~ If _ADOX_TableExists($oConn, "PassageActes") Then ecrireLog("OK table!")
Local $L_Requete = "Insert into FichierEnEntree (Scenario,Environnement,DateDePassage) Values ( '" & String($Scenario) & "' ,'" & String($Environnement)  & "' ,'" & String($DateDePassage) & "')"
;~ msgbox(0,'toto',$L_Requete)
$oConn.execute($L_Requete)
$oConn.Close

$oConn = _ADO_Open($DBPath)

Local $oRs = ObjCreate("ADODB.RecordSet")

Local $L_Requete = "Select * from FichierEnEntree Where Scenario='"& String($Scenario) & "' And Environnement='" & String($Environnement)  & "' And DateDePassage='" & String($DateDePassage) & "'"
$oRs.Open($L_Requete,$oConn)
$oRs.AddNew
Local $Nomcolonne = "FiChierEnEntree"
;Alimentation de la Pièce jointe
$oRs.Fields($Nomcolonne).LoadFromFile($fichier)
$oRs.Update
$oRs.Close
$oConn.Close


EndFunc
 
Lorsque je lance dcette fonction, il me crée bien mon enregistrement , mais lorsque je veux le mettre à jour avec le fichier (dans un 2ème temps), ce dernier n'est pas entré.

HELP ....

Plus de détails sur ce lien :
http://www.autoitscript.fr/forum/viewto ... f=35&t=595
Modifié en dernier par mikell le mer. 11 févr. 2015 13:37, modifié 1 fois.
Raison : Sujet déplacé dans l'aide générale
rollman
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mar. 10 févr. 2015 17:39
Status : Hors ligne

Re: [..] Access - LoadFromFile

#2

Message par rollman »

Bonjour,

Personne n'aurait une petite idée ?... :(
Avatar du membre
walkson
Modérateur
Modérateur
Messages : 1038
Enregistré le : ven. 12 août 2011 19:49
Localisation : Hurepoix
Status : Hors ligne

Re: [..] Access - LoadFromFile

#3

Message par walkson »

Bonjour,
Ce n'est pas possible de vous répondre (pour moi) car votre script est incomplet ex: _ADO_Open($DBPath)
Si votre soucis majeur est de travailler sur une BD il y a SQLite qui permet de faire pas mal de choses. De plus, le forum possède un expert en la matière, notre MVP jchd
Cordialement,
Walkson
"Horas non numero nisi serenas " Le canon de midi
(Je ne compte que les heures heureuses)
rollman
Niveau 1
Niveau 1
Messages : 3
Enregistré le : mar. 10 févr. 2015 17:39
Status : Hors ligne

Re: [..] Access - LoadFromFile

#4

Message par rollman »

Bonjour,

Merci d'avoir regardé en tout cas :)

en fait j'ai essayé d'utiliser SQLITE mais pour une raison que j'ignore cela ne fonctionne pas...

Voici le code en entier (enfin avec toutes les fonctions utilisées dans ce cas).

Func ajouterDetailExecution($Scenario,$Environnement,$DateDePassage,$fichier)
;======= Le programme ==================================
If Not FileExists($DBPath) Then
Msgbox(0,"Pb Accès SQL","ano sql ouverture sgbd")
Global $oCat = ObjCreate("ADOX.Catalog")
$oCat.Create("Provider=" & $adoProvider & ";Data Source=" & $DBPath)
EndIf

$oConn = _ADO_Open($DBPath)
;~ If _ADOX_TableExists($oConn, "PassageActes") Then ecrireLog("OK table!")
Local $L_Requete = "Insert into FichierEnEntree (Scenario,Environnement,DateDePassage) Values ( '" & String($Scenario) & "' ,'" & String($Environnement) & "' ,'" & String($DateDePassage) & "')"
;~ msgbox(0,'toto',$L_Requete)
$oConn.execute($L_Requete)
$oConn.Close

$oConn = _ADO_Open($DBPath)

Local $oRs = ObjCreate("ADODB.RecordSet")

Local $L_Requete = "Select * from FichierEnEntree Where Scenario='"& String($Scenario) & "' And Environnement='" & String($Environnement) & "' And DateDePassage='" & String($DateDePassage) & "'"
$oRs.Open($L_Requete,$oConn)
$oRs.AddNew
Local $Nomcolonne = "FiChierEnEntree"
;Alimentation de la Pièce jointe
$oRs.Fields($Nomcolonne).LoadFromFile($fichier)
$oRs.Update
$oRs.Close
$oConn.Close

EndFunc

Func _ADO_Open($base, $driver = "", $serveur = "", $user = "", $pwd = "")
Local $oConn = ObjCreate("ADODB.Connection")
With $oConn
Switch StringLower($driver)
Case "excel"
.ConnectionString = "Driver={Microsoft Excel Driver (*.xls)};Dbq=" & $base
.Open
Case "text"
.ConnectionString = "Driver={Microsoft Text Driver (*.txt; *.csv)};Dbq=" & $base & ";Extensions=tab;Extended Properties=TEXT"
.Open
Case "mssql"
.ConnectionString = "driver={SQL Server};server=" & $serveur & ";db=" & $base & ";user id=" & $user & ";pwd=" & $pwd & ";option=16386"
.Open
Case Else
.Provider = $adoProvider
.Open($base, $user, $pwd)
EndSwitch
EndWith
Return $oConn
EndFunc ;==>_ADO_Open

Func _ADOX_TableExists(ByRef $oConn, $TableName)
Local $oCat = ObjCreate("ADOX.Catalog")
$oCat.ActiveConnection = $oConn
For $Table In $oCat.Tables
If $Table.Name = $TableName Then
Return True
EndIf
Next
Return False
EndFunc ;==>_ADOX_TableExists
En fait je pense que c'est la méthode aDO LoadFromFile du recordset qui ne fonctionne pas... Et je ne sais aps trop comment l'appeler dans autoit.
Avatar du membre
orax
Modérateur
Modérateur
Messages : 1479
Enregistré le : lun. 23 mars 2009 04:50
Localisation : ::1
Status : Hors ligne

Re: [..] Access - LoadFromFile

#5

Message par orax »

Tu peux ajouter ce code au début du script pour le tracer et voir à quelle ligne peut venir l'erreur.

Code : Tout sélectionner

#AutoIt3Wrapper_Run_Debug_Mode=Y
#AutoIt3Wrapper_Run_Debug=On
De petits détails peuvent faire toute la différence. — Quand la boule de neige commence à rouler… poussez-la. (Columbo)
Répondre