IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VB.NET Discussion :

[Service WIndows] DLL .Net


Sujet :

VB.NET

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut [Service WIndows] DLL .Net
    Bonjour à tous,

    Je suis nouveau sur le forum. Pour une raison que je ne comprends pas j'ai IE(v6) qui plante quand je suis ce forum, j'ai donc pas eu le temps de rechercher sur le site.


    J'avais un service windows conçu en VB6 qui posait problème. J'ai décidé donc de migrer vers VB.Net. J'utilise #Develop pour des raisons de licence.

    J'aimerai donc isoler dans une assemblie publique ma classe de connexion pour bien faire.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
     
     
    Imports System.Data.OleDb
     
    Public Class DBConnection 
     
    #Region "Variables"
     
    'Déclaration des objets OleDB
    Public CNX As New OleDbConnection
    Public CMD As New OleDbCommand
    Public DR As OleDbDataReader
     
    #End Region
     
    #Region "Constructeur"
     
    Sub New()
    	'Connexion avec mot de passe
    	CNX.ConnectionString="Provider=msdaora;datasource=xxxx;UID=xxxx;password=xxxx;"
    End Sub
     
    #End Region
     
    #Region "Fonctions"
     
    'Fonction de connexion à la base de donnée
    Public Sub Ouverture()
    	CNX.Open()
    	CMD.Connection=CNX
    End Sub
     
    'Fonction de déconnexion à la base de donnée
    Public Sub Fermeture()
    	CNX.Close()
    End Sub
     
    'Fonction de requêtage sur la base de donnée
    Public Sub Requete(ByVal _query as String)
    	Dim Resultat As New String("")
    	CMD.CommandText=_query
    	DR=CMD.ExecuteReader()
    End Sub
     
    #End Region
     
    End Class
    Déjà est-ce bien écrit?

    Comment est ce que je vais faire pour appeler mes fonctions dans la dll.

    Puis je mettre plusieurs classe dans la dll?


    Cordialement,

    Baris

  2. #2
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    microsoft visual basic express est gratuit

    dans une dll on met autant de classe qu'on veut

    pour utiliser une dll à partir d'un exe (ou d'une autre dll) il faut ajouter une référence dans le projet vers cette dll

    pour ton code, c'est bien de déporter tout ce qui est connexion dans une classe afin de pas avoir à taper 10 lignes après pour chaque requete, mais après l'executereader il faut extraire les données ... ou alors tu nous as pas mis le code complet
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Le souci avec la version express c'est qu'elle ne proposait pas les services windows comme projet.

    J'ai bien un Visual Studio 2008 Standard edition ( avec une licence légale) Comme je suis en stage dans une entreprise, je ne peux pas utiliser la licence de mon visual pour la migration. ( c'est fort dommage )

    La dll n'est en effet pas compléte. J'ai une classe supplémentaire dans le fichier, utilisant cette classe de connexion. Par contre la classe que j'ai mis est entier.

    Cette classe supplémentaire marche sans problème.

    Je veux utiliser cette(ces) classe(s) directement dans le code de mon service.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    
    Public maconnexion as Object
    
    ....
    
    	Protected Overrides Sub OnStart(ByVal args() As String)
    		' TODO: Add start code here to start your service.
    		
    	Public maconnexion New DBConnection
    	
    	maconnexion.Ouverture

    A la ligne en gras, j'ai une erreur de type attendu(BC30205)

    ça je ne comprends pas. Surtout que ma démarche a fonctionné dans la classe dite supplémentaire de ma dll.


    J'aimerai quelque conseils également concernant la migration VB6-VB.Net


    il y a 2 fichiers frm et 3 fichiers .bas dans le projet originel vb6.

    ConnexionBDD.frm
    Import.frm

    Cryptage.bas
    BOLog01.bas
    Importation.bas


    ConnexionBDD.frm est une form permettant de se connecter à une base de donnée. Elle permet en outre d'insérer des valeurs dans la base de registre, étape nécessaire pour faire passer une application vb6 en tant que service. Sur VB.Net c'est devenu obsolete.
    Une classe de connexion globale est plus intéressante

    BOLog01.bas est le module de connexion à la table BOLog01. Elle permet de lister les tâches à effectuer et leurs statuts. ce module je compte l'ajouter dans la dll DBConnection

    Cryptage.bas permet de crypter les mots de passe ( la base de donnée est facilement accessible. J'en ai fait une dll.

    Import.frm est la form principale. Très liés au module Importation.bas, qui possèdent les fonctions.

    Ce fichier importation, je dois en faire un fichier à part, ou le faire fusionner dans le projet service WIndows.

  4. #4
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    Public maconnexion as Object

    et

    Public maconnexion New DBConnection


    c'est pas trop logique ! autant déclarer maconnexion as DBConnexion

    si ca te dit toujours l'erreur c'est que tu n'as pas référencé la dll dans ton projet service
    d'ailleurs rien ne t'obliges à faire une dll, tu peux tout mettre dans le service


    enfin pour la migration de vb6, il est recommandé d'oublier tout ce qui a été écrit, de refaire un "plan" ou un cahier des charges de ce que l'appli doit faire similaire à celle sous vb6 si y faut
    et d'écrire tout en .net sans passer par des méthodes anciennes ou des bidouillages
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Concernant la migration,pour me simplifier la tâche, suivre le même plan aurait été assez rapide ^^


    Public maconnexion as Object

    et

    Public maconnexion New DBConnection


    c'est pas trop logique ! autant déclarer maconnexion as DBConnexion
    C'est carrément pas logique, je le sais.

    Mais en faisant ça ça m'évite une erreur supplémentaire.


    maconnexion as DBConnection : Type attendu(BC30182)
    Public maconnexion New DBConnection : Fin d'instruction attendue(BC30205)

  6. #6
    Expert éminent Avatar de Pol63
    Homme Profil pro
    .NET / SQL SERVER
    Inscrit en
    Avril 2007
    Messages
    14 197
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 197
    Par défaut
    ca a pas l'air terrible les messages d'erreur de #develop ...

    m'enfin tu ne dis toujours pas si tu as ajouté une référence à ton projet
    et essaye en mettant les namespace devant la classe


    et vous le passez sous .net pour rajouter des fonctionnalités ?
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre averti
    Profil pro
    Inscrit en
    Novembre 2008
    Messages
    22
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Novembre 2008
    Messages : 22
    Par défaut
    Je me sens surtout plus à l'aise en .net qu'en vb6.

    Certaines fonctionnalités dans le service ressemble pas mal à du bidouillage.

    Ce soir je testerai tout cela sur visual studio, #develop a quelque soucis en effet. Ne serait-ce qu'ajouter un fichier dans le projet.

    Je vous tiendrai au courant.

    J'ai bien ajouté en tant que référence DBConnection.dll (j'ai pris la version release du dossier /bin).

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Service windows + DLL
    Par scorbo dans le forum Visual C++
    Réponses: 5
    Dernier message: 17/06/2009, 13h27
  2. Réponses: 1
    Dernier message: 10/02/2009, 09h17
  3. Service windows VB.NET 2005 et application externe ???
    Par raouf77 dans le forum Windows Forms
    Réponses: 11
    Dernier message: 29/11/2008, 14h06
  4. gestion des Services Windows sans .NET
    Par zedoo dans le forum MFC
    Réponses: 1
    Dernier message: 16/05/2005, 23h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo