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 :

Connexion VB 2010 Express à SQL Server 2008 Express [Débutant]


Sujet :

VB.NET

  1. #1
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut Connexion VB 2010 Express à SQL Server 2008 Express
    Bonjour,

    J'aimerai me connecter à SQL Server 2008 express, ou j'ai crée une base

    Via "L'assistant de configuration de source de données " j'ai réussi à me connecter à une base access situé sur mon PC

    Depuis l'onglet "explorateur de base de données", je fais "ajouter une connexion" .
    Il m'est proposé 3 sources possibles :
    - "Fichier de base de données Microsoft Access" : que j'ai déjà utilisé
    - "Fichier de base de données Microsoft SQL Server"
    - "Microsoft SQL Server Compact 3.5"

    Je choisis donc la 2eme solution
    Il m'est alors demandé le nom de la base de données existante et son emplacement sur le disque !
    C'est là que je ne comprends plus : je croyais pouvoir mettre l'adresse de mon serveur "PC-DE-BERTRAND\SQLEXPRESS", mais il me demande l'emplacement d'un fichier (je ne savais pas qu'une base SQL se présentait sous forme de fichier!!

    Je tourne en rond sur ce pb depuis un moment..
    Par avance, merci de vos conseils et un peu prématurément tous mes voeux pour cette nouvelle année !
    Bertrand

  2. #2
    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
    la version express (gratuite) de vs ne contient pas l'assistant de connexion à sql server, mais seulement à sql server ce (base de données en fichier, d'où la demande d'emplacement sur le disque)

    mais ce n'est pas forcément un mal, les assistants tapent du code à la place du développeur, rendant le code peu évolutif et pas forcément compris
    tu peux donc te connecter par code via system.data.sqlclient.sqlconnection et un connectstring qui contient pc\nominstance

    après une base de données sql server "normal" il y a aussi des fichiers mais ceux ci sont inutilisables directement, seul le moteur sql server peut y accéder
    sql server ce, c'est comme access en mieux, il n'y a pas d'exe à installer qui s'occupe de la base, mais une dll dans le framework qui s'occupe des io en fonction des requetes
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  3. #3
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re bonjour
    Merci pour cette réponse rapide !
    Cela me rassure un peu : j'avais beau essayer ..
    Je vais chercher un tuto pour créer cette connexion en code
    Merci encore !
    Bertrand

  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
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  5. #5
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re !
    Merci pour le lien
    J'ai recopié le code du tuto de Mr Plasserre, je l'ai adapté et ça ne marche pas

    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
    Imports System
    Imports System.Data
    Imports System.Data.SqlClient
     
    Public Class Form1
        Inherits System.Windows.Forms.Form
     
     
        Private Sub Form1_Load(sender As System.Object, e As System.EventArgs) Handles MyBase.Load
     
            Dim MyConnexion As SqlConnection = New SqlConnection("Data Source=PC-DE-BERTRAND\SQLEXPRESS;" & "Integrated Security=SSPI;Initial Catalog=Personne")
     
            Dim Mycommand As SqlCommand = MyConnexion.CreateCommand()
     
            Mycommand.CommandText = "SELECT CTC_NOM FROM TE_CONTACT_CTC"
     
            MyConnexion.Open()
     
            Dim myReader As SqlDataReader = Mycommand.ExecuteReader()
     
            Do While myReader.Read()
                '
                ListBox1.Items.Add(myReader.GetString(0))
            Loop
            myReader.Close()
            MyConnexion.Close()
        End Sub
    End Class
    Mon serveur : PC-DE-BERTRAND\SQLEXPRESS
    Base de données : Personne
    Table : TE_CONTACT_CTC
    Champ : CTC_NOM

    J'obtiens l'erreur
    Les données sont null. Cette méthode ou propriété ne peut pas être appelée sur des valeurs Null.
    sur la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
              ListBox1.Items.Add(myReader.GetString(0))
    Je ne vois pas ce qui ne va pas !!
    Merci
    bertrand

  6. #6
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re
    Parfois en persévérant ..
    J'ai changé la requête (le champ lu) .. et ça marche !!!!!
    Je suppose que le 1er champ lu devait être nul !
    En tout cas, merci pour tout !!
    Et bon réveillon
    Bertrand

  7. #7
    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
    les méthodes sur le reader (getstring, getint64 etc...) plantent si la valeur est null ou si la valeur n'est pas du type exact (par exemple getint64 alors que la colonne est en int32)

    on peut tester le null de la manière suivante :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    if reader.item(0) isnot system.dbnull.Value then var = reader.getstring(0)
    sinon il est déconseillé d'accéder aux colonnes par leur numéro
    6 mois après, le champ2 ca va pas forcément te parler (des fois la requete est incluse dans une procédure stockée)
    ou encore l'ajout d'un champ dans la requete décale tous les numéro
    reader.item() accepte le nom de la colonne en string (à caster sur le type), je ne pense pas que reader.getstring() accepte un nom de colonne
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  8. #8
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re
    Comme indiqué, le code est celui recopié sur le Tuto, je n'ai pas encore tout compris.
    Mais à voir, Reader.Item est beaucoup plus souple (pas d'erreur retournée quand renvoie d'un int32 comme la clé de la table) et que le fait de nommer le champ est plus sûr : j'ai complété la requête avec plusieurs champs et la sélection est bien faite !

    J'ai essayé Reader.GetString(NomChamp) : ça ne marche pas !

    Est il conseillé de traiter les relations entre tables dans SQL Server et d'attaquer directement les vues, ou de le faire dans VB (ce que je en sais pas encore faire)
    Merci encore de votre aide !
    Bertrand

  9. #9
    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 105rn2 Voir le message
    Comme indiqué, le code est celui recopié sur le Tuto, je n'ai pas encore tout compris.
    voilà pour l'explication :
    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
    'création de la connexion
    Dim MyConnexion As SqlConnection = New SqlConnection("Data Source=PC-DE-BERTRAND\SQLEXPRESS;" & "Integrated Security=SSPI;Initial Catalog=Personne")
    'création de la classe permettant l'exécution d'une requete depuis la connexion, cet objet utilisera donc la connexion précédemment créée
    Dim Mycommand As SqlCommand = MyConnexion.CreateCommand()
    'définition du texte de la requete
    Mycommand.CommandText = "SELECT CTC_NOM FROM TE_CONTACT_CTC"
    'ouverture de la connexion
    MyConnexion.Open()
    'execution de la requete, le retour est un datareader, objet permettant de lire les données retournées
    Dim myReader As SqlDataReader = Mycommand.ExecuteReader()
    'reader.read lit la ligne suivante (ou la 1ère) et retourne true si une ligne est présente
    'avec un do loop ca permet de lire toutes les lignes
    Do While myReader.Read()
        'une fois positioné sur une ligne on peut lire la valeur des colonnes qu'on souhaite
        ListBox1.Items.Add(myReader.GetString(0))
    Loop
    'fermeture du reader
    myReader.Close()
    'fermeture de la connexion
    MyConnexion.Close()
    à noter :
    Integrated Security utilise les sessions windows comme login, c'est pas ce qu'il y a de plus pratique pour un déploiement réseau sans active directory
    on utilise des using / end using pour disposer les connexion et les command (ca libère la mémoire non managée)
    on utilise un try catch autour, car une connexion peut échouer, l'exécution d'une requete peut planter (verrou, erreur de syntaxe etc...)

    Citation Envoyé par 105rn2 Voir le message
    Mais à voir, Reader.Item est beaucoup plus souple (pas d'erreur retournée quand renvoie d'un int32 comme la clé de la table)
    ca sent le mauvais paramétrage, vb par défaut laisse écrire des choses un peu limite
    il faut mettre option strict on et option explicit on dans les prorpriétés du projet


    Citation Envoyé par 105rn2 Voir le message
    J'ai essayé Reader.GetString(NomChamp) : ça ne marche pas !
    c'est ce que je disais, il n'y a pas de surcharge pour ca, mais ca peut se rajouter ...
    ou sinon directcast(reader.item(NomChamp),string)

    Citation Envoyé par 105rn2 Voir le message
    Est il conseillé de traiter les relations entre tables dans SQL Server et d'attaquer directement les vues, ou de le faire dans VB (ce que je en sais pas encore faire)
    pas compris la question ... enfin si tu parles de jointures, il faut les traiter dans la requete
    select champs from tableA inner join tableB on tableA.clé = tableB.clé
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  10. #10
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonsoir Pol63 et Meilleurs Voeux pour cette nouvelle Année !
    Merci d'avoir pris du temps à expliciter le code

    Pour le Try / catch .. j'ai trouvé sur diverses sources

    Pour les remarques sur Integrated Security et using / end using : il faut que je cherche (l'inconvénient d'être débutant)!

    Grâce à différents tuto et sources glanés ça et là, j'ai réussi à remplir des datagridview :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
                Mycommand.CommandText = "SELECT TBP_ID as No,TBP_CODE as Code,TBP_LIB as Description FROM TE_TIMBRE_TBP"
                Dim DataAdapter As New SqlClient.SqlDataAdapter(Mycommand)
                Dim DataTable As New DataTable
                DataAdapter.Fill(DataTable)
                DataGridView1.DataSource = DataTable
    J'ai essayé sur 60 000 enregistrements, cela m'a paru raisonnablement rapide !

    Il faut encore
    - que je cherche pour les combobox : on utilise aussi les datable ?
    - et surtout la partie dataset pour pouvoir modifier les valeurs

    Peux t on ouvrir plusieurs connexions en même temps,pour transférer des tables entre bases de données par exemple ?
    Si on veut charger plusieurs liste dans un formulaire, on lance plusieurs requêtes, est il recommandé d'ouvrir/fermer la connexion entre chaque requête ou alors on ouvre / on lance x requêtes / on referme ?

    Ma question concernant les vues (requête) était mal formulée :
    - On peut créer des requêtes (vues) contenant éventuellement des relations (jointures) directement dans SQL Server (un peu comme dans Access)
    - j'ai essayé de lancer une requête sur une vue (il suffit de mettre le nom de la vue à la place du nom de la table) : ça marche !
    Étant fainéant de nature, je trouve beaucoup plus facile de créer graphiquement les jointures (j'aime pas les écrire "à la main") , je me demandais si en plus ce ne serait pas plus efficace (plus rapide) car déjà intégrée dans le serveur ?

    Encore merci
    Bertrand

  11. #11
    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 105rn2 Voir le message
    Pour les remarques sur Integrated Security et using / end using : il faut que je cherche (l'inconvénient d'être débutant)!
    pour integrated security, il faut voir la finalité, si tu developpes pour tester tu peux laisser ca sans te poser de question
    si tu développes un logiciel qui sera déployé sur un réseau il y a plus de questions à se poser.

    pour using/end using, tu n'es pas obligé de t'en préoccuper pour l'instant, pour une grosse appli qui tourne h24 et qui fait beaucoup de traitement c'est plus que conseillé, mais sur une petite appli ca n'est pas forcément utile
    .net a un mécanisme de gestion de la mémoire qui s'occupe de tout, donc juste un new connection ira

    Citation Envoyé par 105rn2 Voir le message
    Il faut encore
    - que je cherche pour les combobox : on utilise aussi les datable ?
    - et surtout la partie dataset pour pouvoir modifier les valeurs
    pour le combobox (et pour tout le reste aussi d'ailleurs) tu peux utiliser un datatable ou du code perso
    l'avantage du dataset c'est qu'il s'occupe d'écrire les requête de moficiation (update/insert/delete) pour répercuter les modifications sur la base de données
    ca évite de les écrire soi même
    moi je suis pas très fan, mais pour débuter c'est surement pratique, on ne peut pas être sur tous les fronts en même temps



    Citation Envoyé par 105rn2 Voir le message
    Peux t on ouvrir plusieurs connexions en même temps,pour transférer des tables entre bases de données par exemple ?
    Si on veut charger plusieurs liste dans un formulaire, on lance plusieurs requêtes, est il recommandé d'ouvrir/fermer la connexion entre chaque requête ou alors on ouvre / on lance x requêtes / on referme ?
    sql server (express dans ton cas) est un des meilleurs moteurs de bases de données réseau
    on peut faire des milliers de connexions simultanées et depuis plusieurs postes
    concernant l'ouverture/fermeture de connexion, si ton appli n'utilise qu'une connexion, tu pourrais la laisser ouverte tout le temps
    quand on fait plusieurs connexions de partout, et en multithreading, il est recommandé de les fermer dès qu'on en a plus besoin
    une fermeture de connexion prend moins de 10ms, l'ouverture doit être instantanée dans la plupart des cas
    une fois une connexion ouverte, on peut donc exécuter plusieurs requetes à la suite, on peut même placer plusieurs requetes dans le CommandText, qui seront toutes exécuter à la suite


    Citation Envoyé par 105rn2 Voir le message
    Ma question concernant les vues (requête) était mal formulée :
    - On peut créer des requêtes (vues) contenant éventuellement des relations (jointures) directement dans SQL Server (un peu comme dans Access)
    - j'ai essayé de lancer une requête sur une vue (il suffit de mettre le nom de la vue à la place du nom de la table) : ça marche !
    Étant fainéant de nature, je trouve beaucoup plus facile de créer graphiquement les jointures (j'aime pas les écrire "à la main") , je me demandais si en plus ce ne serait pas plus efficace (plus rapide) car déjà intégrée dans le serveur ?
    les vues sont pratiques pour plusieurs raisons, on peut par exemple les modifier sans recompiler le programme ^^
    l'écriture des jointures, ca viendra avec le temps c'est comme tout
    pour ce qui est des performances, ca ne gagnera pas grand chose voire rien, pour le pourquoi il faudra un peu plus de galon sur sql server ^^


    après quelques mois, une fois qu'on a les bases et qu'on arrive à développer un peu, on peut passer à la compréhension du fonctionnement interne de vb et sql server, ca aide à écrire des choses plus performantes
    (genre qu'est-ce qui se passe techniquement derrière chaque ligne de code, comment sql server fait pour retrouver les données qu'on lui demande ...)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  12. #12
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re,
    L'application restera perso donc au mieux quelques utilisateurs en réseau
    Je garde donc l'authentification windows pour l'instant !

    Pardon, ma question concernant les connexions n'était pas assez claire, je voulais parler de plusieurs connexions en même temps sur mon aplli : exemple 1 connexion SQL + 1 connexion ACCESS, ou 2 connexions SQL sur des BDD différentes : je pensais à cela pour transférer des tables d'une BDD à l'autre ou pour faire ainsi des backup ou MAJ

    Pour les Combobox, j'ai trouvé une solution avec un datareader sur la FAQ de ce site, mais il doit manquer qqchose ; normalement il y a plusieurs valeurs à remplir ; je vais regarder avec les datatable

    Si j'ai bien compris, avec la version Express, pas d'assitant vers SQL Server non local .. donc pas de gestionnaire de table .. donc pas de fonction LINK to SQL ??

    Bonne soirée et encore merci
    Bertrand

  13. #13
    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 105rn2 Voir le message
    Pardon, ma question concernant les connexions n'était pas assez claire, je voulais parler de plusieurs connexions en même temps sur mon aplli : exemple 1 connexion SQL + 1 connexion ACCESS, ou 2 connexions SQL sur des BDD différentes : je pensais à cela pour transférer des tables d'une BDD à l'autre ou pour faire ainsi des backup ou MAJ
    en plus j'avais bien lu ca, mais le temps de répondre sans relire les questions on perd le fil ^^
    oui on peut se connecter à plusieurs bases de données en même temps, différentes aussi
    par contre c'est rarement conseillé de le faire :
    pour du backup ce n'est pas utile, il y a déjà des fonctions de backup dans sql server, pour access un copier coller fait un backup complet
    il y a des fonctions de réplications qui existe sur sql server et access
    sql server peut aussi se lier à d'autres bases de données donc depuis la connexion sql server on peut faire select champs from acces.table1 ou même des jointures entre les 2 bases (voir serveur liés)
    du traitement par lot sera toujours plus rapide que du traitement ligne par ligne, et avec une connexion à 2 bases il faudrait lire une ligne d'une base pour en faire quelque chose dans l'autre


    Citation Envoyé par 105rn2 Voir le message
    Pour les Combobox, j'ai trouvé une solution avec un datareader sur la FAQ de ce site, mais il doit manquer qqchose ; normalement il y a plusieurs valeurs à remplir ; je vais regarder avec les datatable
    avec le combobox de base il est possible de gérer une valeur et un display (propriétés valuemember et displaymember)
    si tu veux un combobox multicolonne, il y a en a un sur codeplex je crois (site de codes open source)


    Citation Envoyé par 105rn2 Voir le message
    Si j'ai bien compris, avec la version Express, pas d'assitant vers SQL Server non local .. donc pas de gestionnaire de table .. donc pas de fonction LINK to SQL ??
    oui ... je pense que tout ca est absent, même entity framework (encore plus séduisant que linq to sql ^^)
    mais on peut s'en passer, même si c'est vrai que quand on a beaucoup de petites applications fortement liés au données à faire ca doit gagner du temps (enfin on peut se faire une petite dll intelligente et générique de manipulation de données)
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  14. #14
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonsoir,
    Mon application est essentiellement une migration Access -> VB + SQL Server
    Donc une fois l’accès et a gestion des données maitrisés, le reste "ne sera que" du formulaire.
    C'est pourquoi aussi, j'avais posé la question des multi-connections : je pensais continuer à utiliser Access et y accéder depuis VB . mais à la réflexion je peux tout aussi bien transférer ma BDD vers SQL Server et garder Access en frontal au début !

    Je suppose que lors de la création d'une connexion avec l'IDE (base Access ou base locale SQL) le designer de cette fonction utilise les mêmes commandes que le code déjà mentionné pour créer cette connexion à la main
    Si oui, n'est il pas possible de créer une connexion locale et en modifier les paramètres pour quelle devienne une connexion à distance ? à moins que ce ne soit pas légal ...

    Pour l'instant, je n'ai pas le niveau pour créer une Dll intelligente et fine, j'approfondis ma formation POO grâce aux tutos ici et là, mais je crois qu'au départ ce sera plutôt bourrin mais qui (je l'espère) marche !

    Autre conseil (qui sort du champ de la question initiale)à propos des images
    Ma base Access fait environ 70 Mo, une centaines de tables dont certaines de plus de 100 000 enregistrements (ce qui fait que je veux maigrir car certaines formulaires de recherche commencent à devenir un peu longs)
    Je n'y ai mis aucune image, ni même aucune adresse d'image
    Les images (environ 100 000 pour 4 Go) sont rangés en sous répertoires logiques et avec des nom logiques : leur "adresse" est en "dur" en VBA
    En passant à SQL Server dois je mettre les images dans la BDD (ou simplement une vignette) ou garder le même principe ?

    Par avance, merci et bonne soirée !
    Bertrand

  15. #15
    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 tout compris
    les objets de connexion access et sql server ne sont pas les mêmes, les requetes diffèrent parfois légèrement car access ne suit pas la norme sql-92
    donc passer d'une base de données à une autre n'est pas toujours aisé (même si parfois ca peut se faire rapidement)
    par contre dans access tu peux faire aussi une liaison vers sql server, ca ne sert pas à grand chose à part garder access en frontal (et éventuellement utiliser les assistants)
    et puis ca perd des performances ...
    la différence aussi entre access et sql server c'est qu'access n'est pas trop fait pour du multiclient (plusieurs exe connectés en même temps) bien qu'il le supporte plutot bien à petite dose, et il est moins performant qu'sql server

    concernant les images c'est une question qui se pose en effet, les mettre dans access ca n'est pas forcément une bonne idée, mettre les chemins dans access c'est faisable par contre
    si les noms sont trouvables par code et le dossier fixe, stocker les chemins n'est même plus utile
    dans sql server peut apporter quelque chose de les mettre en base, ca évite dans le cas d'une appli réseau de partager des dossiers et d'avoir des doublons de gestion des droits, c'est donc à mettre en relation avec les besoins et contraintes techniques
    néanmoins sql server express une base est limité en taille, 4Go pour la version 2005 et je crois que c'est 10Go pour la version 2008 (les versions payantes n'ont pas de limite de taille)
    par contre rien n'empêche de faire une base pour les données et une base pour les fichiers/images
    sur sql server il y a aussi une autre possibilité je crois, c'est le type blob qui fait que le fichier est stocké via windows, mais sql server garde un pointeur vers le fichier, qui n'est donc pas réellement dans la base de données
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  16. #16
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Y'a des fois ( et même souvent) ou je suis pas clair !

    Par contre, je ne sais pas ce qui n'était pas clair !

    Désirant migrer ma BDD Access, je sais qu'il va me falloir un certain temps avant que je ne maitrise VB et que mon appli puisse remplacer Access.
    Pour pouvoir continuer à utiliser Access pendant le développement, j'ai pensé exporter ma BDD sur SQL Server (via les assistants), garder Access en frontal (pour l'instant) mais aussi y avoir accès via mon appli VB (qui remplacera à terme Access)

    Pour la 2nde évocation, c'est plus difficile à expliquer : l'assistant de l'IDE VB permet de très facilement (graphiquement) créer une connexion vers une BDD Access ou SQL Server locale, ce qui ouvre les portes à LINK...
    Je suppose qu'il crée pour cela un fichier xxx.designer qui reprend les instructions de création, si celles ci intègrent les même commandes que celle utilisées dans une connexion par code, je suppose qu'il doit être possible d'en modifier les paramètres pour la transformer en connexion à distance ( ce que je n'ai pas essayé)
    La question que je me posais : serait ce légal de contourner le manque d'assistant pour ce type de connexion ?

    Bonne soirée
    Bertrand

  17. #17
    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
    tu peux bidouiller ce que tu veux sans soucis de légalité
    le code de linq to sql en lui même n'est pas interdit sur du express, c'est juste l'assistant graphique qui n'est pas disponible
    si tu arrives à modifier le code d'access pour sql server tu peux l'utiliser
    Cours complets, tutos et autres FAQ ici : C# - VB.NET

  18. #18
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Re,
    Je vais voir si je peux trouver qqchose sur le net la dessus
    Sinon, je reprends la méthode du code qui a le mérite d'obliger à comprendre ce que l'on fait !
    En tout cas, merci pour tout !
    Bertrand

  19. #19
    Membre habitué
    Homme Profil pro
    Inscrit en
    Octobre 2011
    Messages
    258
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Pas de Calais (Nord Pas de Calais)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Octobre 2011
    Messages : 258
    Points : 126
    Points
    126
    Par défaut
    Bonjour,
    Pour info, j'ai trouvé : "http://www.youtube.com/watch?v=wBAB7DX9IcM"
    Il (ou elle) crée une base SQL compact locale, puis modifie les propriétés de la connexion pour accéder à une base à distance, cela doit je pense ouvrir les portes de la conception graphique

    Moi, j'aimerais par contre utiliser le code et le comprendre
    Si j'ai bien compris , il y a 2 méthodes
    - datareader : lecture rapide seule -> mon 1er code
    - dataset : lecture avec instructions de modifications intégrées ( et remplaçant des requêtes SQL)

    Par contre, mon dernier code (01/01 à 19h47) que j'ai trouvé le plus rapide à exécution comporte une database / DataAdapter mais pas de dataset ni de datareader (ou alors je ne les ai pas vu): il fait partie de quel type ?

    J'avoue patauger grave !!!
    Merci et Bonne soirée !
    Bertrand

  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
    le datareader sert à lire les données
    le datatable sert à stocker les données en ram localement
    le dataset peut contenir plusieurs datatables
    le dataadapter permet de mettre la jour la base de données à partir d'un dataset, il utilise un datareader pour lire les données (méthode fill)

    pour mesurer un temps d'exécution ne serait-ce que visuellement il convient de prendre en compte plusieurs phénomènes
    sql server garde des données en cache, un 2ème appel d'une même requete ira en général plus vite (voir beaucoup plus vite)
    le code .net est compilé à la volée et au fur et mesure de l'utilisation des membres, la 1ère exécution est toujours beaucoup plus lente
    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. Changement de SQL SERVER 2005 express à SQL SERVER 2008
    Par bouali.ali3 dans le forum Administration
    Réponses: 0
    Dernier message: 26/02/2013, 11h32
  2. Erreur de connexion à SQL Server 2008 express
    Par NTIC13 dans le forum MS SQL Server
    Réponses: 36
    Dernier message: 21/01/2011, 18h14
  3. Réponses: 4
    Dernier message: 02/04/2010, 17h25
  4. Pas de connexion avec SQL Server 2008 Express
    Par jloois dans le forum Projets ADP
    Réponses: 6
    Dernier message: 08/02/2010, 14h03
  5. connexion entre netbeans6.5 et sql server 2008 express
    Par supernicoco dans le forum NetBeans
    Réponses: 5
    Dernier message: 26/02/2009, 10h40

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