begin process at 2012 05 27 06:39:05
  Trouver un code source :
 
dans
 
Accueil > 

Code

 > 

ASP.Net

 > EXPORT DES DONNÉES SQL SERVER 2000 VERS ACCESS : UTILISATION ET EXECUTION D'UN LOT DTS

EXPORT DES DONNÉES SQL SERVER 2000 VERS ACCESS : UTILISATION ET EXECUTION D'UN LOT DTS


 Information sur la source

Note :
Aucune note
Catégorie :ASP.Net Source .NET ( DotNet ) Classé sous :exporter, dts, access, sql, sqlserver Niveau :Initié Date de création :24/11/2004 Vu / téléchargé :23 696 / 658

Auteur : arcollet

Ecrire un message privé
Commentaire sur cette source (0)
Ajouter un commentaire et/ou une note

 Description

Il existe de nombreux exemple d'export de données d'une application web vers un fichier Excel.
http://www.aspfr.com/code.aspx?ID=8935
On utilise en général le flux HTML avec comme ContentType = "application/vnd.ms-excel", l'autre méthode étant d'utiliser l'automation OLE, attention toute fois aux performances dans ce dernier cas.

Mais comment faire pour exporter vers Access ? On ne peut le faire, à ma connaisance, via un flux HTML.
En revanche on peut dans le cas de SQL Server faire appel aux lots DTS et appeller ces lots dans une application ASP.NET
Pour celà il faut utiliser un composant COM "Microsoft DTSPackage Object Library" qu'il faut référencer dans votre application ASP.NET
Le mode d'authentification doit être celle de SQL Server et non Windows donc pas de "Integrated Security=SSPI" dans la chaine de connection.

La démarche : (Format 2000 du fichier Access)

1° Conserver le système relationnel des données à exporter
Dans ce cas il faut préalablement créer un fichier modèle sur le server (model.mdb) avec les tables d'origines vides mais liées entre elles.

1°bis Si pas conservation du système relationnel des données à exporter
Dans ce cas on utilise un fichier modèle (model.mdb)  totalement vide que l'on crée préalablement ou dynamiquement dans l'application ASP.NET en utilisant le composant COM ADOX "Microsoft ADO Ext. 2.8 for DDL and Security" mais pourquoi se compliquer ? Autant le créer avant et si on a besoin de le copier et de le renommer on utilisera les class .NET du System.IO

Le code de création dynamique d'un fichier Access est dans ce cas :
Imports ADOX
'Création d'un fichier Access
'path = "D:\TempFile\model.mdb"
    Public Shared Function NewMDB(ByVal path As String) As String
        Dim message As String = "Fichier Access créé correctement"
        Try
            Dim cat As ADOX.Catalog = New ADOX.Catalog
            cat.Create("Provider=Microsoft.Jet.OLEDB.4.0;" & _
            "Data Source=" & path & _
            "Jet OLEDB:Engine Type=5")
            cat.ActiveConnection.close()
            cat = Nothing
        Catch exc As System.Runtime.InteropServices.COMException
            message = exc.Message()
        Catch exc As Exception
            message = exc.Message()
        Finally
            NewMDB = message
        End Try
    End Function

2° Création du Lot DTS
Inconvénient : le nom du fichier modèle "model.mdb" doit être connu à l'avance, il est peut-être possible d'utiliser les variables globales des lots DTS et de les passer en paramètre dans le code mais je n'ai pas trouvé la méthode
cf impr écran dans le doc dts.doc

3° Execution du lot DTS dans l'application ASP.NET
On peut se limiter à ce code :

Imports System.Runtime.InteropServices
Imports DTS

'Nom du lot = package = "ExportAccess"
Public Class ExportDTS

Function Execute(ByVal package As String) As String

Dim pkg As DTS.Package
Dim message As String = "Export ok"

Try
pkg = New DTS.Package
pkg.LoadFromSQLServer("Nom du server", "User", "Password", _
DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, _
"", "", "", package, Nothing)
pkg.Execute()
pkg.UnInitialize()
pkg = Nothing
Catch exc As System.Runtime.InteropServices.COMException
mes sage = exc.Message()
Catch exc As Exception
message = exc.Message()
Finally
End Try

Execute = message

End Function

En revanche l'utilisation de la class PackageEventsSink sert à controler le bon déroulement de l'execution du lot DTS. Je ne maitrise malheureusement pas sa réelle utilité.
cf. 321525 HOW TO: Use DTS Package Events in Visual Basic .NET
http://support.microsoft.com/?id=321525

Source

  • Imports System.Runtime.InteropServices
  • Imports DTS
  • 'Nom du lot = package = "ExportAccess"
  • Public Class ExportDTS
  • Function Execute(ByVal package As String) As String
  • Dim pkg As DTS.Package
  • Dim message As String = "Export ok"
  • Try
  • pkg = New DTS.Package
  • 'Debut - set up events sink
  • Dim cpContainer As UCOMIConnectionPointContainer
  • cpContainer = CType(pkg, UCOMIConnectionPointContainer)
  • Dim cpPoint As UCOMIConnectionPoint
  • Dim PES As PackageEventsSink = New PackageEventsSink
  • Dim guid As Guid = _
  • New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5")
  • cpContainer.FindConnectionPoint(guid, cpPoint)
  • Dim intCookie As Integer
  • cpPoint.Advise(PES, intCookie)
  • 'Fin - set up events sink
  • pkg.LoadFromSQLServer("Nom du server", "User", "Password", _
  • DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, _
  • "", "", "", package, Nothing)
  • pkg.Execute()
  • pkg.UnInitialize()
  • pkg = Nothing
  • cpPoint.Unadvise(intCookie)
  • cpPoint = Nothing
  • cpContainer = Nothing
  • PES = Nothing
  • Catch exc As System.Runtime.InteropServices.COMException
  • message = exc.Message()
  • Catch exc As Exception
  • message = exc.Message()
  • Finally
  • End Try
  • Execute = message
  • End Function
  • End Class
  • 'Permet de suivre l'execution du lot DTS
  • Public Class PackageEventsSink
  • Implements DTS.PackageEvents
  • Overridable Overloads Sub OnError(ByVal EventSource As String, _
  • ByVal ErrorCode As Integer, ByVal Source As String, _
  • ByVal Description As String, ByVal HelpFile As String, _
  • ByVal HelpContext As Integer, ByVal IDofInterfaceWithError As String, _
  • ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnError
  • Console.WriteLine(" OnError in {0}; ErrorCode = {1}, Source = {2}," & _
  • " Description = {3}", EventSource, ErrorCode, Source, Description)
  • End Sub
  • Overridable Overloads Sub OnFinish(ByVal EventSource As String) _
  • Implements DTS.PackageEvents.OnFinish
  • Console.WriteLine(" OnFinish in {0}", EventSource)
  • End Sub
  • Overridable Overloads Sub OnProgress(ByVal EventSource As String, _
  • ByVal ProgressDescription As String, ByVal PercentComplete As Integer, _
  • ByVal ProgressCountLow As Integer, ByVal ProgressCountHigh As Integer) _
  • Implements DTS.PackageEvents.OnProgress
  • Console.WriteLine(" OnProgress in {0}; ProgressDescription = {1}", _
  • EventSource, ProgressDescription)
  • End Sub
  • Overridable Overloads Sub OnQueryCancel(ByVal EventSource As String, _
  • ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnQueryCancel
  • If EventSource.Length > 0 Then
  • Console.WriteLine(" OnQueryCancel in {0}; pbCancel = {1}", _
  • EventSource, pbCancel.ToString)
  • Else
  • Console.WriteLine(" OnQueryCancel; pbCancel = {0}", pbCancel.ToString)
  • End If
  • pbCancel = False
  • End Sub
  • Overridable Overloads Sub OnStart(ByVal EventSource As String) _
  • Implements DTS.PackageEvents.OnStart
  • Console.WriteLine(" OnStart in {0}", EventSource)
  • End Sub
  • End Class
  • '-----------------------------------------------------------
  • 'Exemple d'utilisation de ces class dans un fichier ASPX.VB
  • 'Penser à créer le control hyperlink dans l'aspx nommer "HL_Export"
  • '---------------------------------------------------------------------------------------
  • Imports System.IO
  • Public Class export
  • Inherits System.Web.UI.Page
  • 'Execution de l'export via un lot DTS
  • Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
  • 'Nom du fichier final
  • Dim final As String = "final.mdb"
  • 'Nom du fichier d'export temporaire
  • Dim file As String = "model.mdb"
  • 'Execution du lot DTS
  • Dim export As New ExportDTS
  • export.Execute("ExportAccess"))
  • 'Renommage du fichier d'export
  • File.copy("D:\TempFile\" & file, D:\tempFile\" & final)
  • File.delete("D:\tempFile\" & file)
  • 'Téléchargement du fichier
  • HL_Export.NavigateUrl = "http://localhost/TempFile/" & final
  • HL_Export.Text = "Télécharger"
  • End Sub
  • End Class
Imports System.Runtime.InteropServices
Imports DTS

'Nom du lot = package = "ExportAccess"
Public Class ExportDTS

	Function Execute(ByVal package As String) As String

		Dim pkg As DTS.Package
		Dim message As String = "Export ok"

		Try
			pkg = New DTS.Package
			'Debut - set up events sink
			Dim cpContainer As UCOMIConnectionPointContainer
			cpContainer = CType(pkg, UCOMIConnectionPointContainer)
			Dim cpPoint As UCOMIConnectionPoint
			Dim PES As PackageEventsSink = New PackageEventsSink
			Dim guid As Guid = _
			 New Guid("10020605-EB1C-11CF-AE6E-00AA004A34D5")
			cpContainer.FindConnectionPoint(guid, cpPoint)
			Dim intCookie As Integer
			cpPoint.Advise(PES, intCookie)
			'Fin - set up events sink
			pkg.LoadFromSQLServer("Nom du server", "User", "Password", _
			 DTSSQLServerStorageFlags.DTSSQLStgFlag_Default, _
			 "", "", "", package, Nothing)
			pkg.Execute()
			pkg.UnInitialize()
			pkg = Nothing
			cpPoint.Unadvise(intCookie)
			cpPoint = Nothing
			cpContainer = Nothing
			PES = Nothing
		Catch exc As System.Runtime.InteropServices.COMException
			message = exc.Message()
		Catch exc As Exception
			message = exc.Message()
		Finally
		End Try

		Execute = message

    End Function


End Class

'Permet de suivre l'execution du lot DTS
Public Class PackageEventsSink
    Implements DTS.PackageEvents

    Overridable Overloads Sub OnError(ByVal EventSource As String, _
            ByVal ErrorCode As Integer, ByVal Source As String, _
            ByVal Description As String, ByVal HelpFile As String, _
            ByVal HelpContext As Integer, ByVal IDofInterfaceWithError As String, _
            ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnError
        Console.WriteLine(" OnError in {0}; ErrorCode = {1}, Source = {2}," & _
            " Description = {3}", EventSource, ErrorCode, Source, Description)
    End Sub
    Overridable Overloads Sub OnFinish(ByVal EventSource As String) _
            Implements DTS.PackageEvents.OnFinish
        Console.WriteLine(" OnFinish in {0}", EventSource)
    End Sub
    Overridable Overloads Sub OnProgress(ByVal EventSource As String, _
            ByVal ProgressDescription As String, ByVal PercentComplete As Integer, _
            ByVal ProgressCountLow As Integer, ByVal ProgressCountHigh As Integer) _
            Implements DTS.PackageEvents.OnProgress
        Console.WriteLine(" OnProgress in {0}; ProgressDescription = {1}", _
            EventSource, ProgressDescription)
    End Sub
    Overridable Overloads Sub OnQueryCancel(ByVal EventSource As String, _
            ByRef pbCancel As Boolean) Implements DTS.PackageEvents.OnQueryCancel
        If EventSource.Length > 0 Then
            Console.WriteLine(" OnQueryCancel in {0}; pbCancel = {1}", _
                EventSource, pbCancel.ToString)
        Else
            Console.WriteLine(" OnQueryCancel; pbCancel = {0}", pbCancel.ToString)
        End If
        pbCancel = False
    End Sub
    Overridable Overloads Sub OnStart(ByVal EventSource As String) _
            Implements DTS.PackageEvents.OnStart
        Console.WriteLine(" OnStart in {0}", EventSource)
    End Sub

End Class


'-----------------------------------------------------------
'Exemple d'utilisation de ces class dans un fichier ASPX.VB
'Penser à créer le control hyperlink dans l'aspx nommer "HL_Export"
'---------------------------------------------------------------------------------------

Imports System.IO

Public Class export
    Inherits System.Web.UI.Page

'Execution de l'export via un lot DTS
Private Sub Page_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load

		'Nom du fichier final
		Dim final As String = "final.mdb"

		'Nom du fichier d'export temporaire
		Dim file As String = "model.mdb"
		
		'Execution du lot DTS
		Dim export As New ExportDTS
		export.Execute("ExportAccess"))
		
		'Renommage du fichier d'export
                                File.copy("D:\TempFile\" & file, D:\tempFile\" & final)
                                File.delete("D:\tempFile\" & file)

		'Téléchargement du fichier
		HL_Export.NavigateUrl = "http://localhost/TempFile/" & final
		HL_Export.Text = "Télécharger"

End Sub

End Class

 Conclusion

Voilà j'espère que c'est assez clair :)

Certains ne manqueront pas de faire remarquer à juste titre que l'utilisation des lots DTS n'est utile qu'en cas d'utilisation de SQL Server. Alors qu'en est il avec Oracle ou tout autre base de données ?
Peut être apporterez vous une réponse.
Une piste cependant est l'utilisation dans le code des "insert into" via ODBC :
SELECT * INTO [AccTable] FROM [odbc;driver={ServerBDD};server=MYSERVER;database= MYDB;uid=myuser;pwd=mypass].[SQLTable]
Mais je n'ai pas testé cette approche qui me parait un peu lourde

Amicalement et bon coding

Denis


 Fichier Zip

Les Membres Club peuvent télécharger directement un fichier contenu dans le zip sans télécharger le zip en entier !
  • dts.docTélécharger ce fichier [Réservé aux membres club]418 304 octets

Télécharger le zip


 Sources du même auteur

Source .NET (Dotnet) CHAINES DE CARACTÈRES - UPLOAD
Source .NET (Dotnet) GENERATION DE MOTS DE PASSE, ENCORE UN MAIS CELUI LÀ EST UN ...

 Sources de la même categorie

Source avec Zip Source .NET (Dotnet) GUESTBOOK AVEC GRIDVIEW par DanMor498
Source avec Zip CHECKED DROPDOWNLIST par fredzool
Source avec Zip Source avec une capture Source .NET (Dotnet) GRIDVIEW WITH TREEVIEW AND CALLBACK par fredzool
Source avec Zip APPELLER UN WEBSERVICE DEPUIS JAVASCRIPT par fredzool
Source avec Zip Source .NET (Dotnet) MONEY TEXTBOX WITH EMBEDED JAVASCRIPT par fredzool

 Sources en rapport avec celle ci

Source avec Zip UN MODULE POUR APPRENDRE SQL par Elmarzougui
Source .NET (Dotnet) IMPORTER UN FICHIER EXCEL DEPUIS UN POSTE ET L'AJOUTER SUR L... par jseblavoie
Source .NET (Dotnet) CONNEXION SQL SERVEUR + LISTBOX par zeb13
Source .NET (Dotnet) AFFICHER LE CONTENU D'UNE TABLE SOUS SQLSERVEUR 2000 par tribals
Source .NET (Dotnet) REMPLIR UN DATAGRID AVEC UN DATASET ! par fatalbert

Commentaires et avis

Aucun commentaire pour le moment.

 Ajouter un commentaire


Discussions en rapport avec ce code source dans le forum

exporter une base SQL server [ par sbertrand ] bonjour,J'utilise access XP pour me connecter sur ma base SQL server.Le probleme c'est qu'a chaque modif d'une ligne, access envoi une requete au serv UPDATE dans ACCESS [ par Titrax ] Voila mon programme :SQL="UPDATE Personne SET Connect='1' WHERE Nom='" & Pseudo & "';"Set RS=Server.CreateObject("ADODB.RECORDSET")RS.Open SQL,Baseet Requête SQL, Access et Oracle [ par Zeus ] Problème:Je passe une variable "no_groupe" en paramètre entre deux pages web de la page qui reçois la variable je veux l'utiliser dans une requête SQL sql vers access [ par astt ] Reprendre un exemple de code .net s'appuyant sur une data base SQL server et l'utiliser avec une base access, voila un beau challenge . Je me demande access vs sql [ par astt ] Reprendre un exemple de code .net s'appuyant sur une data base SQL server et l'utiliser avec une base access, voila un beau challenge . Je me demande exporter une bdd Access sur le web [ par gaddoc ] Bonjour;J'ai fini de développer un site web avec ASP. Seulement j'ai du mal à envoyer la base de données Access sur le net. J'ai utilisé ftpx1010 et j Probleme avec une requete SQL vers la base de donnée ACCESS !! [ par Seven ] bon voila, ça fait une heure que je me chicane ak ASP, bref voila le bug, j'ai une base de donnée, je vais qui trie le résultat par rapport a une requ SQL séléction au hasard d'un enregistrement d'une table access [ par txR_ch ] Salut,je cherche déséspérement la requête SQL pour access qui séléctionne un enregistrement (ou une ligne) au hasardJe sais que c'est possible pour my gro problM access VBA SQL [ par snowsurfer69 ] salut a tous!!!voila j'ai 1 gros problème et c'est très urgent!!!!voila j'crée une base de données sous access 2002 et donc j'utilise du code VBAen fa


Nos sponsors


Sondage...

CalendriCode

Mai 2012
LMMJVSD
 123456
78910111213
14151617181920
21222324252627
28293031   

Consulter la suite du CalendriCode

A découvrir



 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 2,527 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales