Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Récupération nom de fichier

6 réponses
Avatar
Christianbt
Bonjour,
J'ai un bout de code en VB qui me donne la liste des fichiers présents dans
un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales dans un
lot DTS ou insérer ces noms de fichiers dans une table d'une base SQL Server.
Voici mon code actuel :
Dim di As New DirectoryInfo("MonDossier")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
For Each fri In fiArr
Console.WriteLine(fri.Name)
Next fri
----
qq un aurait-il une suggestion ?
Merci

6 réponses

Avatar
Fred
dans : news:,
Christianbt écrivait :

Bonjour,


Bonjour,

J'ai un bout de code en VB qui me donne la liste des fichiers
présents dans un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales
dans un lot DTS ou insérer ces noms de fichiers dans une table d'une
base SQL Server. Voici mon code actuel :



Une solution pour mettre les noms de fichier dans une table avec ActiveX
Data Objects

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"
cn.Open

cmd.CommandText = "INSERT INTO FILES VALUES(?)"
cmd.CommandType = adCmdText

cmd.Parameters.Append cmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, fri.Name)

Set cmd.ActiveConnection = cn
cmd.Execute

cn.Close

À intégrer dans ton code.
Remarques :
Data Source est de la forme [nom ou ip du serveur][nom de l'instance]
Si la sécurité est en mode SQL, utiliser :
Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User
Id=sa;Password=asdasd

voir ici pour plus de détails : http://www.connectionstrings.com/

Je suppose qu'il y a une base nommée "dataBase"
une table nommée "FILES"
avec une seule colonne de type nvarchar nommée "FileName"

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT

Avatar
martial collinet
Bonjour,

Si tu le permets Fred, je commente ton code afin qu'il soit compréhensible
pour un néophyte.

' Déclaration des constantes propres à ADO
Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

' Déclaration des variables
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

' Objet connexion à la base de données
Set objcnn = CreateObject("ADODB.Connection")
' Chaine de connexion à la base de données
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"

' Gestion d'erreur
on error resume next
objcnn.Open
if err.number <> 0 then
wscript.echo "Erreur d'accès à la base" & vbcrlf & err.description
wscript.quit
end if

' Objet command permettant d'effectuer une requete action sur la base
Set objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO FILES VALUES(?)"
' Définition du type de commande (requete text, nom de table, procédure
stockée...)
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
Set objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append objcmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, null)

' Parcours des fichiers du répertoire
set objfso = createobject("scripting.filesystemobject")
set objfolder = objfso.getfolder("mondossier")
For Each objfile in objfolder.files
cmd.parameters(0).value = objfile.name
cmd.Execute
Next

objcnn.Close

set objcmd = nothing
set objcnn = nothing
set objfile = nothing
set objfolder = nothing
set objfso = nothing

----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



dans : news:,
Christianbt écrivait :

Bonjour,


Bonjour,

J'ai un bout de code en VB qui me donne la liste des fichiers
présents dans un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales
dans un lot DTS ou insérer ces noms de fichiers dans une table d'une
base SQL Server. Voici mon code actuel :



Une solution pour mettre les noms de fichier dans une table avec ActiveX
Data Objects

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"
cn.Open

cmd.CommandText = "INSERT INTO FILES VALUES(?)"
cmd.CommandType = adCmdText

cmd.Parameters.Append cmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, fri.Name)

Set cmd.ActiveConnection = cn
cmd.Execute

cn.Close

À intégrer dans ton code.
Remarques :
Data Source est de la forme [nom ou ip du serveur][nom de l'instance]
Si la sécurité est en mode SQL, utiliser :
Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User
Id=sa;Password=asdasd

voir ici pour plus de détails : http://www.connectionstrings.com/

Je suppose qu'il y a une base nommée "dataBase"
une table nommée "FILES"
avec une seule colonne de type nvarchar nommée "FileName"

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT





Avatar
Christianbt
Merci à Fred et Martial,

En effet, comme je suis néophyte, toutes ces informations me seront bien
utiles. Je vais tester tout cela.
Merci pour vos réponses...

Christian



Bonjour,

Si tu le permets Fred, je commente ton code afin qu'il soit compréhensible
pour un néophyte.

' Déclaration des constantes propres à ADO
Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

' Déclaration des variables
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

' Objet connexion à la base de données
Set objcnn = CreateObject("ADODB.Connection")
' Chaine de connexion à la base de données
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"

' Gestion d'erreur
on error resume next
objcnn.Open
if err.number <> 0 then
wscript.echo "Erreur d'accès à la base" & vbcrlf & err.description
wscript.quit
end if

' Objet command permettant d'effectuer une requete action sur la base
Set objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO FILES VALUES(?)"
' Définition du type de commande (requete text, nom de table, procédure
stockée...)
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
Set objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append objcmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, null)

' Parcours des fichiers du répertoire
set objfso = createobject("scripting.filesystemobject")
set objfolder = objfso.getfolder("mondossier")
For Each objfile in objfolder.files
cmd.parameters(0).value = objfile.name
cmd.Execute
Next

objcnn.Close

set objcmd = nothing
set objcnn = nothing
set objfile = nothing
set objfolder = nothing
set objfso = nothing

----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



dans : news:,
Christianbt écrivait :

Bonjour,


Bonjour,

J'ai un bout de code en VB qui me donne la liste des fichiers
présents dans un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales
dans un lot DTS ou insérer ces noms de fichiers dans une table d'une
base SQL Server. Voici mon code actuel :



Une solution pour mettre les noms de fichier dans une table avec ActiveX
Data Objects

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"
cn.Open

cmd.CommandText = "INSERT INTO FILES VALUES(?)"
cmd.CommandType = adCmdText

cmd.Parameters.Append cmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, fri.Name)

Set cmd.ActiveConnection = cn
cmd.Execute

cn.Close

À intégrer dans ton code.
Remarques :
Data Source est de la forme [nom ou ip du serveur][nom de l'instance]
Si la sécurité est en mode SQL, utiliser :
Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User
Id=sa;Password=asdasd

voir ici pour plus de détails : http://www.connectionstrings.com/

Je suppose qu'il y a une base nommée "dataBase"
une table nommée "FILES"
avec une seule colonne de type nvarchar nommée "FileName"

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT







Avatar
Christianbt
Re-Bonjour,

Voici finalement le code écrit, si je n'ai pas fait trop d'erreur. Mais
néanmoins je n'ai pas d'insertion dans ma table et j'ai ce message lorsque je
l'exécute pas à pas :
"Number of parameters specified does not match the expected number." sur la
ligne "objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)"; le fri de fri.name est souligné en
vert...
Aussi, est-ce que je dois remplacer le (?) par autre chose ??
Merci pour votre aide :

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

Public Sub main()
objcnn = CreateObject("ADODB.Connection")
objcmd = CreateObject("ADODB.Command")
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=monserveur;Initial Catalog=mabase;Integrated Security=SSPI"
objcnn.Open()

Dim di As New DirectoryInfo("L:mondossier")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
For Each fri In fiArr
Console.WriteLine(fri.Name)
Next fri

' Objet command permettant d'effectuer une requete action sur la base
objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO matable VALUES(?)"
' Définition du type de commande (requete text, nom de table,
procédure stockée...)'
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)

objcmd.ActiveConnection = objcnn
objcmd.Execute()

objcnn.Close()

Christian


Merci à Fred et Martial,

En effet, comme je suis néophyte, toutes ces informations me seront bien
utiles. Je vais tester tout cela.
Merci pour vos réponses...

Christian



Bonjour,

Si tu le permets Fred, je commente ton code afin qu'il soit compréhensible
pour un néophyte.

' Déclaration des constantes propres à ADO
Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

' Déclaration des variables
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

' Objet connexion à la base de données
Set objcnn = CreateObject("ADODB.Connection")
' Chaine de connexion à la base de données
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"

' Gestion d'erreur
on error resume next
objcnn.Open
if err.number <> 0 then
wscript.echo "Erreur d'accès à la base" & vbcrlf & err.description
wscript.quit
end if

' Objet command permettant d'effectuer une requete action sur la base
Set objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO FILES VALUES(?)"
' Définition du type de commande (requete text, nom de table, procédure
stockée...)
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
Set objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append objcmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, null)

' Parcours des fichiers du répertoire
set objfso = createobject("scripting.filesystemobject")
set objfolder = objfso.getfolder("mondossier")
For Each objfile in objfolder.files
cmd.parameters(0).value = objfile.name
cmd.Execute
Next

objcnn.Close

set objcmd = nothing
set objcnn = nothing
set objfile = nothing
set objfolder = nothing
set objfso = nothing

----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



dans : news:,
Christianbt écrivait :

Bonjour,


Bonjour,

J'ai un bout de code en VB qui me donne la liste des fichiers
présents dans un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales
dans un lot DTS ou insérer ces noms de fichiers dans une table d'une
base SQL Server. Voici mon code actuel :



Une solution pour mettre les noms de fichier dans une table avec ActiveX
Data Objects

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"
cn.Open

cmd.CommandText = "INSERT INTO FILES VALUES(?)"
cmd.CommandType = adCmdText

cmd.Parameters.Append cmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, fri.Name)

Set cmd.ActiveConnection = cn
cmd.Execute

cn.Close

À intégrer dans ton code.
Remarques :
Data Source est de la forme [nom ou ip du serveur][nom de l'instance]
Si la sécurité est en mode SQL, utiliser :
Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User
Id=sa;Password=asdasd

voir ici pour plus de détails : http://www.connectionstrings.com/

Je suppose qu'il y a une base nommée "dataBase"
une table nommée "FILES"
avec une seule colonne de type nvarchar nommée "FileName"

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT









Avatar
Christianbt
Re-Re,

J'ai modifié un peu le code et le fri n'est plus souligné en vert, mais
toujours la même erreur :
"Number of parameters specified does not match the expected number." sur la
ligne "objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)";

Voici de nouveau le code :

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1
Dim objfso, objfolder, objfile
Dim objcnn, objcmd
Dim di As New DirectoryInfo("L:monfichiers")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo

Public Sub main()
objcnn = CreateObject("ADODB.Connection")
objcmd = CreateObject("ADODB.Command")
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=monserveur;Initial Catalog=mabase;Integrated Security=SSPI"
objcnn.Open()

For Each fri In fiArr
Console.WriteLine(fri.Name)
Next fri

' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO matable_CRM VALUES(?)"
' Définition du type de commande (requete text, nom de table,
procédure stockée...)'
objcmd.CommandType = adCmdText
' Création du paramêtre de la requete
objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)

objcmd.ActiveConnection = objcnn
objcmd.Execute()

objcnn.Close()


Re-Bonjour,

Voici finalement le code écrit, si je n'ai pas fait trop d'erreur. Mais
néanmoins je n'ai pas d'insertion dans ma table et j'ai ce message lorsque je
l'exécute pas à pas :
"Number of parameters specified does not match the expected number." sur la
ligne "objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)"; le fri de fri.name est souligné en
vert...
Aussi, est-ce que je dois remplacer le (?) par autre chose ??
Merci pour votre aide :

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

Public Sub main()
objcnn = CreateObject("ADODB.Connection")
objcmd = CreateObject("ADODB.Command")
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=monserveur;Initial Catalog=mabase;Integrated Security=SSPI"
objcnn.Open()

Dim di As New DirectoryInfo("L:mondossier")
Dim fiArr As FileInfo() = di.GetFiles()
Dim fri As FileInfo
For Each fri In fiArr
Console.WriteLine(fri.Name)
Next fri

' Objet command permettant d'effectuer une requete action sur la base
objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO matable VALUES(?)"
' Définition du type de commande (requete text, nom de table,
procédure stockée...)'
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)

objcmd.ActiveConnection = objcnn
objcmd.Execute()

objcnn.Close()

Christian


Merci à Fred et Martial,

En effet, comme je suis néophyte, toutes ces informations me seront bien
utiles. Je vais tester tout cela.
Merci pour vos réponses...

Christian



Bonjour,

Si tu le permets Fred, je commente ton code afin qu'il soit compréhensible
pour un néophyte.

' Déclaration des constantes propres à ADO
Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

' Déclaration des variables
Dim objfso, objfolder, objfile
Dim objcnn, objcmd

' Objet connexion à la base de données
Set objcnn = CreateObject("ADODB.Connection")
' Chaine de connexion à la base de données
objcnn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"

' Gestion d'erreur
on error resume next
objcnn.Open
if err.number <> 0 then
wscript.echo "Erreur d'accès à la base" & vbcrlf & err.description
wscript.quit
end if

' Objet command permettant d'effectuer une requete action sur la base
Set objcmd = CreateObject("ADODB.Command")
' Définition de la requete. Le ? indique un paramêtre
objcmd.CommandText = "INSERT INTO FILES VALUES(?)"
' Définition du type de commande (requete text, nom de table, procédure
stockée...)
objcmd.CommandType = adCmdText
' Défiinition de la connexion active
Set objcmd.ActiveConnection = objcnn
' Création du paramêtre de la requete
objcmd.Parameters.Append objcmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, null)

' Parcours des fichiers du répertoire
set objfso = createobject("scripting.filesystemobject")
set objfolder = objfso.getfolder("mondossier")
For Each objfile in objfolder.files
cmd.parameters(0).value = objfile.name
cmd.Execute
Next

objcnn.Close

set objcmd = nothing
set objcnn = nothing
set objfile = nothing
set objfolder = nothing
set objfso = nothing

----------------------------------
martial collinet
http://martialcollinet.free.fr
----------------------------------



dans : news:,
Christianbt écrivait :

Bonjour,


Bonjour,

J'ai un bout de code en VB qui me donne la liste des fichiers
présents dans un dossier spécifique.
Je souhaite récupérer ces noms de fichiers comme variables globales
dans un lot DTS ou insérer ces noms de fichiers dans une table d'une
base SQL Server. Voici mon code actuel :



Une solution pour mettre les noms de fichier dans une table avec ActiveX
Data Objects

Const adCmdText = 1
Const adVarWChar = 202
Const adParamInput = 1

Set cn = CreateObject("ADODB.Connection")
Set cmd = CreateObject("ADODB.Command")
cn.ConnectionString = "Provider=sqloledb;Data
Source=serverinstance;Initial CatalogÚtaBase;Integrated
Security=SSPI;"
cn.Open

cmd.CommandText = "INSERT INTO FILES VALUES(?)"
cmd.CommandType = adCmdText

cmd.Parameters.Append cmd.CreateParameter("FileName", adVarWChar,
adParamInput, 512, fri.Name)

Set cmd.ActiveConnection = cn
cmd.Execute

cn.Close

À intégrer dans ton code.
Remarques :
Data Source est de la forme [nom ou ip du serveur][nom de l'instance]
Si la sécurité est en mode SQL, utiliser :
Provider=sqloledb;Data Source=Aron1;Initial Catalog=pubs;User
Id=sa;Password=asdasd

voir ici pour plus de détails : http://www.connectionstrings.com/

Je suppose qu'il y a une base nommée "dataBase"
une table nommée "FILES"
avec une seule colonne de type nvarchar nommée "FileName"

--
Fred
http://www.cerbermail.com/?3kA6ftaCvT











Avatar
Fred
dans : news:,
Christianbt écrivait :

Re-Re,


Bonjour,

J'ai modifié un peu le code et le fri n'est plus souligné en vert,
mais toujours la même erreur :
"Number of parameters specified does not match the expected number."
sur la ligne
"objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)";


Cela vient peut-être de la structure de ta table.
Pour mon exemple, je n'avais qu'une colonne, donc un seul paramètre à
insérer.
La syntaxe du INSERT est peut-être un peu différente dans ton cas :
INSERT INTO matable_CRM(Nom_Fichiers) VALUES(?)


For Each fri In fiArr
Console.WriteLine(fri.Name)


---> C'est ici qu'il faut placer le code d'insertion dans la base

Next fri


Tu peux toutefois placer certaines lignes avant la boucle :

Set objcnn = CreateObject("ADODB.Connection")
Set objcmd = CreateObject("ADODB.Command")
objcnn.ConnectionString = "bla bla"
cn.Open

objcmd.CommandText = "INSERT INTO matable_CRM(Nom_Fichiers)
VALUES(?)"
objcmd.CommandType = adCmdText
objcmd.ActiveConnection = objcnn

Dans la boucle (le code d'insertion en base) :

objcmd.Parameters.Clear 'effacer le paramètre du tour précédent
objcmd.Parameters.Append.objcmd.CreateParameter("Nom_Fichiers",
adVarWChar, adParamInput, 512, fri.Name)
objcmd.Execute()

Après la boucle :

objcnn.Close()




--
Fred
http://www.cerbermail.com/?3kA6ftaCvT