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

Dotnet Discussion :

Lancement application sans ouverture de session [Débutant]


Sujet :

Dotnet

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut Lancement application sans ouverture de session
    Bonjour à tous et avant tout je vous souhaite une excellente année à vous et vos proches
    (j'ai encore jusqu'à la fin du mois pour vous le dire)

    Voilà, j'ai fais depuis quelques temps une petite application en vb net et ça grâce à vous, pour faire mes sauvegardes SQL.
    Ça me fait mes sauvegardes automatisé le jour et l'heure voulu grâce a des checkbox et autres textbox à l'endroit voulu.
    Jusqu'à la pas de problèmes.
    Maintenant j'aimerais le faire évoluer encore un peu
    Mon problème c'est que mon appli fonctionne seulement si ma session est lancée.
    J'ai bien regardé entre faire un service et lancé tâche planifiée
    Pour le service mes compétences me font défaut
    Pour la tâche planifié je trouvais ça plus de mon niveau.
    C'est cette dernière que je me suis tourné mais hélas ça fonctionne pas j'ai paramétré ma tâche en choisissant mon exécutable et mettant bien au démarrage du système mais rien se passe
    Je me demande si ce n'est pas à cause de ma fenêtre ou est enregistrer ma configuration du backup avec les textbox et checkbox

    Car mon appli est fait pour se lancer en même temps que ma session Windows et là pas de problème.

    Je sais pas si je me suis bien expliqué mais si une âme charitable passe par là
    Je vous remercie d'avance

    merci,

  2. #2
    Membre confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Décembre 2005
    Messages
    482
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 43

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Agroalimentaire - Agriculture

    Informations forums :
    Inscription : Décembre 2005
    Messages : 482
    Points : 625
    Points
    625
    Par défaut
    Salut,
    perso j'aurais créé un service :
    Ce n'est pas beaucoup plus compliqué, tu as quelques évènements à gérer comme le Start et le Stop et une procédure pour l'installer.

    la page krosoft est assez bien faite : (la preuve j'ai réussi ^^)
    https://msdn.microsoft.com/fr-fr/lib...vs.110%29.aspx

    pour tester mon service j'ai créé un deuxième projet qui instanciait ma classe service et lancait les evenement OnStart et OnStop (ca évite de le réinstaller/executer/stopper le service à chaque test :p)
    "Essayer est le premier pas vers l'Echec !" (Homer Simpson)

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Bonjour Themacleod1980

    J'ai vu le sujet sur Microsoft.

    J'ai vais revoir pour faire un service
    mais je comprends pas pourquoi dans ma tâche planifié ça fonctionne pas mais je suppose le fait que tout est écrit dans les textbox ou checkbox et que le démarrage de mon backup se fie à ce qui est indiqué dans mes champs pour lancer la sauvegarde et que du coup comme mon appli n'est pas lancé il peut pas lire les infos.

    Je sais pas si j'ai raison mais ça me parait bizarre
    Ne faudrait -il pas que mes données pour mes sauvegardes soit enregistrer autrement
    Si quelqu'un pouvait me dire si oui ou non c'est à cause de ça

    merci encore

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    tache planifiée + textbox dans la même phrase oui ca fait bizarre si c'est ca la question
    mais il y a pire, genre un service + un textbox ^^
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Citation Envoyé par Pol63 Voir le message
    tache planifiée + textbox dans la même phrase oui ca fait bizarre si c'est ca la question
    mais il y a pire, genre un service + un textbox ^^
    Oui je me suis peut-être mal exprimé
    la tâche planifié doit lancé mon executable
    Mes textbox et autres sont dans ma form qui compose mon executable
    ce que j'essaie de dire c'est que dans ma form se trouve différent champ ou je peux renseigner les différents éléments qui doivent permettre cette sauvegarde
    Et dans mon code, on doit prendre ces renseignement qui se trouve dans ces champs

    Voilà si je dois encore développer mon problème, n'hésite pas

    merci

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    non, je pense que c'est bien ce que j'avais compris ...

    une tâche planifiée c'est quelque chose qui doit fonctionner tout seul
    un textbox c'est quelque chose qui sert à une saisie utilisateur
    donc ca n'a rien à faire dans le même exe
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Merci Pol

    Donc je dois forcément utiliser un service?
    si c'est le cas va falloire que je me penche sur le fonctionnement car je me suis jamais vraiment pencher sur cette solution
    j'ai à peu près vu comment faire pour le démarrage et l'arrêt et tout les événements
    Mais je dois mettre dans le fonctionnement quel exécutable il doit lancer?

    si tu as des enseignements, je suis preneur

    merci encore

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    faire un projet de type service
    tu auras un fichier service1 avec 2 méthodes : onstart et onstop
    dans onstart tu mets
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    dim th as new system.threading.thread(adressof traitement)
    th.Start

    et donc
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private sub traitement
      while true
         system.threading.thread.sleep(1000)
         if c'est l'heure de faire quelque chose
             quelquechose
         end if
      end while
    end sub
     
    private sub quelquechose
    end sub
    ensuite créer le serviceinstaller, et installer le service

    enfin disons que c'est une trame possible
    ca fait l'équivalent d'une tâche planifiée




    si tu veux réellement une tâche planifiée qui ne fait rien d'autre, alors fait une application console et mets là en tache planifiée


    si ton traitement dépend d'un paramétrage, ce paramétrage doit être sur le disque dur, et potentiellement créé avec un autre logiciel (type windows forms)
    ton appli de traitement de fera que lire le paramétrage sur le disque dur
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  9. #9
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Merci Pol63


    Citation Envoyé par Pol63 Voir le message
    faire un projet de type service
    tu auras un fichier service1 avec 2 méthodes : onstart et onstop
    Oui ça j'ai vu dans la documentation que j'ai pu lire à gauche et à droite


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    private sub traitement
      while true
         system.threading.thread.sleep(1000)
         if c'est l'heure de faire quelque chose
             quelquechose
         end if
      end while
    end sub
     
    private sub quelquechose
    end sub
    Mon appli faudrait quelle soit lancer en permanence car tout dépend de l'heure de la programmation des sauvegardes, car ce n'est pas forcément la même heure partout suivant mes serveurs
    c'est pour ça au début j'avais imaginé une tâche planifié " Au démarrage du système lancer un programme".


    si tu veux réellement une tâche planifiée qui ne fait rien d'autre, alors fait une application console et mets là en tache planifiée
    je veux pas forcément une tâche planifié, j'étais partis sur cette idée surtout par rapport à mes compétence et je pensais une tâche plus simple pour moi
    maintenant je préfère faire quelques choses d'efficace et de propre. tant cas faire quelques choses autant que ça soit bien fait .

    si ton traitement dépend d'un paramétrage, ce paramétrage doit être sur le disque dur, et potentiellement créé avec un autre logiciel (type windows forms)
    ton appli de traitement de fera que lire le paramétrage sur le disque dur
    effectivement mon traitement dépend des informations qui sont contenus dans des texbox et autres afin de connaitre les infos du serveur SQL, les dates et heures ainsi que les chemins du backup etc...
    Mes paramétrages sont stockées dans les paramètres de mon appli (type string, boolean..), on les retrouve dans un fichier xml dans le dossier de l'application

    Au début on fait des choses "assez simple" mais au fur et à mesure des besoins, on s'aperçoit qu'il faut revoir et réorganiser son appli. Mais c'est un très bon apprentissage.

    Si on pouvait revoir le dernier point au sujet des traitements et me dire si mon paramétrage est bon ou si je dois le revoir. J'avais pensé qu'il fallait plus le faire dans une dll sinon, je sais pas si je me trompe

    merci encore Pol

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    d'un côté le service a l'air de mieux convenir, d'un autre côté j'ai eut les mêmes besoin il y a quelques années
    on installe des serveurs avec des bases etc...
    et donc pour simplifier tout ca j'avais fait une appli windows forms avec des textboxes, qui sauvegardait le paramétrage
    et une appli console qui faisait le backup et cette appli était mise en tâche planifiée à l'heure qu'on voulait, ce qui au final prend à peine plus de temps qu'installer un service
    après tout dépend du ratio temps de développement temps perdu à l'install, donc du nombre de serveur, le tout pondéré avec tes compétences (car on peut faire un service auto installable avec une appli windows forms pour le paramétrage le tout dans le même exe, ce qui au final doit être le mieux)

    par contre il ne faut pas utiliser les settings de projet (que ca soit dans ce cas où d'une manière générale )
    donc fichier ini, xml ou autre
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Je ne veux pas faire un morceau par-ci et l'autre par là.
    Je préfère quand même quelque chose même si c'est pour moi un truc clean en un seul morceau.
    La solution avec un service auto installable avec mon appli me parait une bonne solution.
    Je commence à avoir quelques serveurs qui tourne sous SQL (quand on en a 1 ou 2 on peut se permettre de faire des choses au cas par cas) mais là j'aimerais faire de l'homogène et propre, surtout que je peux pas forcément regarder tout les jours si les sessions sont bien lancées.
    Par contre d'après ce que tu me dis va falloire que je repense tout à zéro.
    Donc adieu mon paramétrage.
    Pour le temps c'est pas ce qui me préoccupe le plus, je suis patient.
    Pour les compétences bon tu as remarqué . J'essaie pas non plus à développé le logiciel du siècle.
    Je pense qu'il va falloire que je commence à revoir le système de lecture du paramétrage mais bon je sais pas par ou commencé

    Merci Pol pour toute ces remarques
    mais désolé je pense que je vais avoir pas mal de question

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    ca parrait peut etre une montagne mais au final il te faut une petite centaine de lignes de code
    le tout est de trouver lesquelles

    pour le paramétrage, ce que je trouve pratique c'est la sérialisation xml
    dans le principe tu fais une classe, avec une propriété par paramètre que tu veux enregistrer
    il faut en faire un singleton (instance shared)
    une méthode de lecture (fichier => instance) et une méthode de sauvegarde (instance => fichier)
    là c'est simple, une ligne de code du type xmlserialization.serialize(instance), pareil dans l'autre sens
    ca gère assez bien l'évolutivité

    pour le mix exe de paramétrage, exe service, il y a une ligne de code magique, voir ce post http://www.developpez.net/forums/d14...s/#post8110314

    par contre ton service devra vérifier si le fichier de config a été modifié de temps en temps (genre comparer date last write)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  13. #13
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Bon je vais d'abord me pencher sur la serialization
    Ensuite une fois que la méthode de paramétrage sera ok je me tourne vers le service

    Je vais faire des mini projet pour tester

    je te tiens au courant

    merci Pol

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par menfoutix Voir le message
    Je vais faire des mini projet pour tester
    c'est une très bonne méthode
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  15. #15
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Bonsoir

    Donc voilà j'ai fait quelque chose
    Dans un projet, j'ai créé une Windows Form et classe

    Dans ma Form j'ai mes textbox et boutons enregistrer et mes checkbox
    voilà ce que j'ai mis comme code dans le Bouton enregistrer pour la sérialisation
    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
    48
    49
    50
    51
    52
    53
    Imports System.IO
    Imports System.Xml.Serialization
     
    Public Class Form1
     
        Private Sub btnEnregistre_Click(sender As Object, e As EventArgs) Handles btnEnregistre.Click
     
            Dim ID As New IDSQL()
     
            'Information de connexion  SQL
            ID.SQLname = txtsqlname.Text
            ID.SQLID = txtidsql.Text
            ID.SQLPass = txtpasssql.Text
            ID.ConnBase = txtbaseconn.Text
            ID.mondaycb = cbmonday.CheckState
            ID.tuesdaycb = cbtuesday.CheckState
            ID.Wednesdaycb = cbWednesday.CheckState
            ID.thursdaycb = cbthursday.CheckState
            ID.fridaycb = cbfriday.CheckState
            ID.saturdaycb = cbsaturday.CheckState
            ID.sundaycb = cbsunday.CheckState
            ID.heuretb = tbheure.Text
            ID.minutetb = tbminute.Text
            ID.Savechemin = TextBoxFichierBackup.Text
            ID.fichiername = TextBoxbaseBackup.Text
            ID.fileNb = NUM_NBSAVE.Value
            ID.Jouraffiche = afichejour.CheckState
     
            'Sérialisation fichier XML, via l'utilisation de StreamWriter
            Dim objstreamWriter As New StreamWriter(Application.StartupPath + "\InfoIDSQL.xml")
            Dim xmlSerialize As New XmlSerializer(ID.GetType) 'Déterminer quels types d'objets sont présents
     
            xmlSerialize.Serialize(objstreamWriter, ID) 'Sauvegarde
            objStreamWriter.close() 'ferme fichier
     
        End Sub
     
        Private Sub btnparcourir_Click(sender As Object, e As EventArgs) Handles btnparcourir.Click
            Dim dossier As New FolderBrowserDialog
            dossier.RootFolder = Environment.SpecialFolder.Desktop
            dossier.Description = "Selection du repertoire de stockage"
            dossier.ShowNewFolderButton = True
            dossier.ShowDialog()
            If dossier.SelectedPath = String.Empty Then
                Return
            Else
                TextBoxFichierBackup.Text = dossier.SelectedPath
                If Not TextBoxFichierBackup.Text.EndsWith("\") Then
                    TextBoxFichierBackup.Text = TextBoxFichierBackup.Text & ("\")
                End If
            End If
            dossier.Dispose()
        End Sub
    et dans ma classe
    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
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    81
    82
    83
    84
    85
    86
    87
    88
    89
    90
    91
    92
    93
    94
    95
    96
    97
    98
    99
    100
    101
    102
    103
    104
    105
    106
    107
    108
    109
    110
    111
    112
    113
    114
    115
    116
    117
    118
    119
    120
    121
    122
    123
    124
    125
    126
    127
    128
    129
    130
    131
    132
    133
    134
    135
    136
    137
    138
    139
    140
    141
    142
    143
    144
    145
    146
    147
    148
    149
    150
    151
    152
    153
    154
    155
    156
    157
    158
    159
    160
    161
    162
    163
    164
    165
    166
    167
    168
    169
    170
    171
    172
    Imports System.Xml.Serialization
     
    Public Class IDSQL
     
        Private vnameSQL As String 'variable nom du serveur SQL
        Private vIDSQL As String 'variable de l'identifiant SQL
        Private vPassSQL As String 'variable du mot de passe SQL
        Private vBaseconn As String 'variable de la base SQL
        Private vcbMonday As Boolean 'variable Choix Lundi
        Private vcbtuesday As Boolean 'variable Choix Mardi
        Private vcbWednesday As Boolean 'variable Choix Mercredi
        Private vcbthursday As Boolean 'variable Choix Jeudi
        Private vcbfriday As Boolean 'variable Choix vendredi
        Private vcbsaturday As Boolean 'variable Choix Samedi
        Private vcbsunday As Boolean 'variable Choix Dimanche
        Private vtbminute As String 'variable des Minutes
        Private vtbheure As String 'variable des Heures
        Private vCheminsave As String 'variable du chemin de sauvegard
        Private vnbfile As Decimal 'variable du nombre de fichier de sauvegarde à sauvegarder
        Private vaffichejour As Boolean ''variable pour afficher le jour au nom du fichier de sauvegarde
        Private vnamefichier As String 'variable du nom de fichier de sauvegarde
     
        Public Property SQLname() As String
            Get
                SQLname = vnameSQL
            End Get
            Set(ByVal value As String)
                vnameSQL = value
            End Set
        End Property
     
        Public Property SQLID() As String
            Get
                SQLID = vIDSQL
            End Get
            Set(ByVal value As String)
                vIDSQL = value
            End Set
        End Property
     
        Public Property SQLPass() As String
            Get
                SQLPass = vPassSQL
            End Get
            Set(ByVal value As String)
                vPassSQL = value
            End Set
        End Property
     
        Public Property ConnBase() As String
            Get
                ConnBase = vBaseconn
            End Get
            Set(ByVal value As String)
                vBaseconn = value
            End Set
        End Property
     
        Public Property mondaycb() As Boolean
            Get
                mondaycb = vcbMonday
            End Get
            Set(ByVal value As Boolean)
                vcbMonday = value
            End Set
        End Property
     
        Public Property tuesdaycb() As Boolean
            Get
                tuesdaycb = vcbtuesday
            End Get
            Set(ByVal value As Boolean)
                vcbtuesday = value
            End Set
        End Property
     
        Public Property Wednesdaycb() As Boolean
            Get
                Wednesdaycb = vcbWednesday
            End Get
            Set(ByVal value As Boolean)
                vcbWednesday = value
            End Set
        End Property
        Public Property thursdaycb() As Boolean
            Get
                thursdaycb = vcbthursday
            End Get
            Set(ByVal value As Boolean)
                vcbthursday = value
            End Set
        End Property
        Public Property fridaycb() As Boolean
            Get
                fridaycb = vcbfriday
            End Get
            Set(ByVal value As Boolean)
                vcbfriday = value
            End Set
        End Property
        Public Property saturdaycb() As Boolean
            Get
                saturdaycb = vcbsaturday
            End Get
            Set(ByVal value As Boolean)
                vcbsaturday = value
            End Set
        End Property
        Public Property sundaycb() As Boolean
            Get
                sundaycb = vcbsunday
            End Get
            Set(ByVal value As Boolean)
                vcbsunday = value
            End Set
        End Property
     
        Public Property heuretb() As String
            Get
                heuretb = vtbheure
            End Get
            Set(ByVal value As String)
                vtbheure = value
            End Set
        End Property
     
        Public Property minutetb() As String
            Get
                minutetb = vtbminute
            End Get
            Set(ByVal value As String)
                vtbminute = value
            End Set
        End Property
     
        Public Property Savechemin() As String
            Get
                Savechemin = vCheminsave
            End Get
            Set(ByVal value As String)
                vCheminsave = value
            End Set
        End Property
     
        Public Property fichiername() As String
            Get
                fichiername = vnamefichier
            End Get
            Set(ByVal value As String)
                vnamefichier = value
            End Set
        End Property
     
        Public Property fileNb() As Decimal
            Get
                fileNb = vnbfile
            End Get
            Set(value As Decimal)
                vnbfile = value
            End Set
        End Property
     
        Public Property Jouraffiche() As Boolean
            Get
                Jouraffiche = vaffichejour
            End Get
            Set(ByVal value As Boolean)
                vaffichejour = value
            End Set
        End Property
     
    End Class
    Pour moi j'ai testé, ça a bien enregistré au bon endroit avec les valeur mise dans les textbox
    Par contre est-ce la bonne solution au niveau programmation ou si je me trompe

    Merci

    [EDIT]
    Bonjour pol63

    voilà j'ai fait une form avec les champs qui pourra me permettre de faire mes sauvegardes
    j'ai crée une class qui enregistre mes paramètres dans un fichier xml
    par contre j'ai une question le code qui me permet de sauvegarder, c'est à dire tout la partit de l’exécution de la sauvegarde avec les renseignements de connexion à la base (SQLCmd) et autres je dois aussi le mettre dans une class

    Merci à toi

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    pas compris

    la sérialisation xml permet de faire un fichier pour une instance d'une classe
    si tu ne veux qu'un fichier il faut que cette instance ait toutes les propriétés dont tu as besoin
    par contre cette instance peut etre complexe (des propriétés as une autre classe qui a plusieurs propriétés, ou des collections (contenant plusieurs instances))
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  17. #17
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    oui à me relire moi aussi j'ai du mal
    Déjà peux-tu me dire par rapport à ce que j'ai mis dans l'exemple un peu plus haut, si je suis dans la bonne voie au moins pour la première partie
    cette partie je faisais l’enregistrement de ces champs via les paramètres de mon appli
    J'ai fait ce que tu m'as dis de le faire via sérialisation en fin j'espère que c'est ce que j'ai fait et après si c'est bon j'attaque la partie proprement dite de la sauvegarde via la commande (SQLCmd)

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    Citation Envoyé par menfoutix Voir le message
    Déjà peux-tu me dire par rapport à ce que j'ai mis dans l'exemple un peu plus haut, si je suis dans la bonne voie au moins pour la première partie
    surement
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  19. #19
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2009
    Messages
    112
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2009
    Messages : 112
    Points : 23
    Points
    23
    Par défaut
    Bon on va dire que je suis sur la voie

    maintenant j'essaie de passer à la sauvegarde en elle-même
    j'utilise ce code pour faire mes sauvegardes
    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
      Private Sub savesql()
            Dim dDate As String = Date.Today.ToString("dddd")
            Dim ext As String = ".bak" 'extension du fichier
            Dim Connection As New SqlConnection()
            Dim timeout As SqlCommand = New SqlCommand
            timeout.CommandTimeout = 0
            Dim nomserveur, nomuser, passuser, connbase As String
            Try
                nomserveur = txtsqlname.Text 'Nom du serveur SQL
                nomuser = txtidsql.Text      'Utilisateur SQL
                passuser = txtpasssql.Text   ' Mot de passe User SQL
                connbase = txtbaseconn.Text  ' Nom de la base ou se connecter
                Connection.ConnectionString = "Data source=" & nomserveur & " ;Database= " & connbase & ";User ID=" & nomuser & ";Password=" & passuser & ";"
                Connection.Open()
                'sauvegarde de la base dans un repertoire personnaliser
     
                Dim SQLCmd As New SqlCommand()
                SQLCmd = timeout
                SQLCmd.Connection = Connection
                If afichejour.CheckState = CheckState.Checked Then
                    SQLCmd.CommandText = "BACKUP DATABASE " & connbase & " TO DISK = '" & TextBoxFichierBackup.Text & TextBoxbaseBackup.Text & "_" & dDate & ext & "'" & "WITH INIT"
                Else
                    SQLCmd.CommandText = "BACKUP DATABASE " & connbase & " TO DISK = '" & TextBoxFichierBackup.Text & TextBoxbaseBackup.Text & "_" & ext & "'" & "WITH INIT"
                End If
                SQLCmd.ExecuteNonQuery()
            Catch exp As SqlException
                'MessageBox.Show(exp.Message)
                Dim el As New backup_SQL.ErrorLogger
                Dim ev As New Backup_SQL.EventLogger
                el.WriteToErrorLog(exp.Message, exp.StackTrace, "Error")
                ev.WriteToEventLog(exp.Message, "backup_SQL", EventLogEntryType.Error, "Backup_SQL")
                'MsgBox("Error logged.")
            Finally
                Connection.Close()
            End Try       
        End Sub
    Ce code est ajouté dans ma form ou je renseignai via mes champs textbox etc.. les logins de sql
    Par rapport à ce que tu m'as dit de faire une sérialisation par une classe ma question est, est-ce code je dois le mettre aussi dans ma classe?
    Et est ce que dois lire le fichier xml pour renseigner mes connexions SQL ou je dois toujours utiliser mes champs textbox et autres

    Excuse moi d'être le boulet de service mais j'ai pas beaucoup pratiqué les classes et j'essaie d'imaginer dans ma tête le fonctionnement et comment elles interagissent
    Par ce que je suis quelqu'un de visuel et j'ai besoin de voir

    merci et désolé

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

    Informations professionnelles :
    Activité : .NET / SQL SERVER

    Informations forums :
    Inscription : Avril 2007
    Messages : 14 154
    Points : 25 072
    Points
    25 072
    Par défaut
    disons que ca me parrait évident

    en fait ce qui me laisse perplexe c'est qu'avec
    - il faut des paramètres pour savoir faire le backup
    - les paramètres sont dans un fichier xml
    tu nous parles encore de textbox ... qu'est-ce qu'ils viendraient faire là ? surtout que dans un service même si on doit pouvoir instancier des controles on ne pourra jamais les afficher ...

    j'ai du parler de singleton précédemment, tu as peut etre pas fait gaffe et donc pas creusé, ca permet de simplifier le code, tout en le sécurisant
    dans le principe ca donne

    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
    public class MesParametres
     
      private sub new /// private pour interdire l'instanciation externe
      end sub
     
      private shared _MesParametres as MesParametres
      public shared function GetInstance() as MesParametres
         return _MesParametres
      end sub
     
     
      public shared sub Save
         /// sérialisation de _MesParametres dans le fichier xml
      end sub
     
      public shared sub Load
         if system.io.file.exists("path") = false then
             _MesParametres = New MesParametres /// fichier n'existe pas, donc 1er appel de l'exe par exemple, on instancie une classe vide
             Exit Sub
         end if
         /// désérialisation dans _MesParametres (donc l'instance unique qui existera de cette classe, donc tes paramètres dans une variable globale
      end sub
     
      /// puis toutes tes propriétés à sauvegarder
      /// tu peux mettre des valeurs par défaut en définissant une valeur pour la variable privée
     
    end class
    donc au démarrage de l'exe winform de paramétrage tu appelles MesParametres.Load, si le fichier existe pas ce sont les paramètres par défaut ou du vide
    si le fichier existe tu pourras alors remplir les textbox avec les paramètres via
    me.textbox1.text = MesParametres.GetInstace.TellePropriété
    avant d'appeler .Save il faut remettre les valeur des textboxes dans les propriétés
    (donc du binding ca peut etre pratique pour évider de taper du code pour les 2 lignes que je viens d'écrire)

    sur l'exe service, au démarrage tu fais .Load, tu auras MesParametres.GetInstace.TellePropriété de remplie



    après concernant ton code de backup

    Dim timeout As SqlCommand = New SqlCommand
    Dim SQLCmd As New SqlCommand() /// l'instance qui est ici va donc être inutilisée
    SQLCmd = timeout

    il n'est pas obligé d'écrire un new sur une déclaration de variable, as quelque chose suffit dans certains cas
    enfin ici déclarer un seul sqlcommand suffit ...

    pour la connexion, au lieu de faire un dim + un finally et .close tu peux faire un using / end using
    ca appelle .dispose comme on pourrait le faire avec un finally, ca a le mérite de ne pas instancier la variable hors du try
    paranoia peut etre ^^ m'enfin il faut s'habituer aux using / end using qui sont bien pratique

    sinon tu peux aussi faire de la détection de version d'sql server pour ajouter ou non WITH COMPRESSION au bout, ca peut etre sympa (2008 payantes, et 2012 même express je crois)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 2 12 DernièreDernière

Discussions similaires

  1. [PowerShell] Script en tâche plannifié ne fonctionne pas sans ouverture de session admin
    Par corly dans le forum Scripts/Batch
    Réponses: 7
    Dernier message: 02/10/2014, 09h02
  2. Lancement application sans console
    Par moufasa dans le forum Général Java
    Réponses: 2
    Dernier message: 29/09/2009, 14h53
  3. Lancement d'une application à l'ouverture de Windows ?!
    Par zentaf dans le forum VB 6 et antérieur
    Réponses: 9
    Dernier message: 09/11/2007, 17h37
  4. Application sans multi-session
    Par Luciefer dans le forum Langage
    Réponses: 5
    Dernier message: 17/08/2007, 14h18
  5. Réponses: 9
    Dernier message: 11/11/2006, 20h33

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