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

Accès aux données Discussion :

connexion à un fichier de base de données sql server express


Sujet :

Accès aux données

  1. #1
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut connexion à un fichier de base de données sql server express
    Bonjour

    je n'arrive pas à exécuter mon application après déploiement. Toutes mes recherches sont vaines. sur ma machine, je n'ai aucun problème. l'application est construite en vb 2008 et la base de données sql server express. je me connecte au fichier de base de données et j'ai l'erreur en pièce jointe.
    je compte sur vous pour surmonter cette difficulté
    Images attachées Images attachées  

  2. #2
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    la chaine de connexion est la suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    connectionstring="Data Source=.\SQLEXPRESS;AttachDbFilenam="C:\LGHI\GESTION COMMERCIALE\BD_LEHI.mdf";Integrated Security=True;Connect Timeout=30;User Instance=True"
    pour complément d'information

  3. #3
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Si tu utilises cette connection string, il faut que tu installes une instance de SQL Server Express sur l'ordinateur où tu déploies ton application, et que tu y déploies ta base de données.

    En revanche si l'idée est d'utiliser ta machine comme serveur de base de données, alors il faut que tu remplaces le point par le nom (ou l'IP) de ta machine lorsque tu déploies l'application. Il faut également vérifier que les ports soient correctement ouverts dans le(s) firewall(s) entre la machine sur laquelle tu déploies et ta machine.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  4. #4
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    Merci en partie.

    j'ai téléchargé et installé Ms Sql server Express 2005. Et mon application démarre. le hic, quand je veux afficher mes données, il m'affiche ce message:
    La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors limite de date et heure.
    je tiens à préciser que tout marche parfaitement sur ma machine.
    dans ma base de données, les dates sont de type nvarchar(10) et les temps de type nvarchar(8). pour les manipuler, dans mes vues et code, je convertis les valeurs des champs "bDate" de type nvarchar en date selon la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    convert(datetime,bDate,103)
    au lieu de
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    cast(bDate as datetime)
    qui me ramenait des faux résultats de requête.
    y a-t-il quelque chose dans toutes ces conversions qui clochent où le problème est ailleurs?
    je tiens encore à préciser que tout marche parfaitement sur ma machine.

    Merci d'avance

  5. #5
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Il faut peut-être vérifier que tu n'aies pas de valeur NULL ou incohérentes qui remontent dans les résultats de ta requête. Pour voir cela, enlève le cast, et regarde ce que tu récupères.

    Ensuite il faudra adapter un peu ta requête, afin de gérer le cas où les données ne peuvent pas être converties. Je t'invite également à lire The Ultimate Guide to the DateTime Datatypes si tu souhaites approfondir le sujet
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  6. #6
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    tout est impeccable

    je pense à une seule possibilité:
    mes conversions de date ne sont peut être pas prises en compte par la version de sql server express déployée.

    je vais donc télécharger et installer plusieurs versions de sql server express et je vous rendrai compte

  7. #7
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    C'est bizarre que tout soit impeccable

    Tu es sûr et certain de ne pas avoir de formats de date tordus ? Ca ne saute pas forcément aux yeux... Ca peut être un zéro manquant par exemple.

    Tu peux utiliser ISDATE afin de voir si tes données sont convertibles en DateTime valid.

    Autre info à savoir, la valeur d'une DateTime doit être comprise entre 1/1/1753 12:00:00 AM et 12/31/9999 11:59:59 PM. Donc si tu as des valeurs qui sortent de cet intervalle, la conversion va échouer (par exemple 01/01/0001 00:00:00).
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  8. #8
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    Et pourtant tout marche parfaitement sur ma machine.
    c'est seulement quand je déploie que j'ai tous les pépins.
    c'est pour cela que j'accuse la compatibilité de versions entre le sql server que j'ai sur ma machine et celui deployé.

    je tiens encore à préciser que mes valeurs de date sont de type nvarchar dans mes tables. elles sont converties en date à l'aide de la fonction "convert".

  9. #9
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Citation Envoyé par djelloharmel Voir le message
    Et pourtant tout marche parfaitement sur ma machine.
    c'est seulement quand je déploie que j'ai tous les pépins.
    Oui c'est souvent comme ça ! Les paramètres linguistiques peuvent être différents et ça peut jouer sur ça.

    Citation Envoyé par djelloharmel Voir le message
    c'est pour cela que j'accuse la compatibilité de versions entre le sql server que j'ai sur ma machine et celui deployé.
    Non, SQL Server aura le même comportement de partout. En revanche comme je l'ai déjà dit, les paramètres régionaux peuvent influer sur certaines choses.

    De toute façon le test pour savoir si ça vient de tes données est simple. Exécute la requête suivante :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    SELECT ISDATE(bDate)
    FROM TaTable
    GROUP BY ISDATE(bDate)
    Regarde le résultat :
    - S'il y a juste un 1 qui apparait, ça veut dire que ça ne vient pas de tes données
    - S'il y a un 0 et un 1, c'est que certaines données ne peuvent pas être converties en DateTime
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  10. #10
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    tu as tout à fait raison DotNetMatt

    j'ai surtout constaté que toutes les dates au delà du 12ème jour ne sont pas considérées de type "date".

    doit-je donc mettre toutes les dates dans les tables au format "MM/dd/yyyy"?

    je vais essayer pour une table et généraliser si ça marche.

  11. #11
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    le problème persiste malgré les changements.
    je disais tantôt que j'avais mis les champs de date en type varchar. eh bien, je les ai remis en type date (datetime).
    sur ma machine, il n y a aucun pépin. mais quand je déploie, le problème revient.
    en lançant cette requête:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
     
    SELECT ISDATE(bDate)
    FROM TaTable
    GROUP BY ISDATE(bDate)
    toutes les valeurs sont à 1.

    je suis désepéré.
    help me

  12. #12
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Arf Tu as toujours ce message d'erreur ou c'est un autre ?
    La conversion d'un type de données CHAR en type DATETIME a donné une valeur hors limite de date et heure.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  13. #13
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    c'est le même message

  14. #14
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Ben là c'est bizarre. Peux-tu poster le DDL de la table et le code de ta requête SQL ? Si tu peux également, un jeu de données (avec les instructions INSERT) serait le bien venu
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  15. #15
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    pour créer la table

    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
    USE [annuaire]
    GO
     
    /****** Object:  Table [dbo].[t_contact]    Script Date: 05/23/2013 10:45:52 ******/
    SET ANSI_NULLS ON
    GO
     
    SET QUOTED_IDENTIFIER ON
    GO
     
    CREATE TABLE [dbo].[t_contact](
    	[Contact] [nvarchar](50) NOT NULL,
    	[TypeOperateur] [nvarchar](10) NULL,
    	[Nom] [nvarchar](50) NULL,
    	[Adresse] [nvarchar](50) NULL,
    	[Observation] [nvarchar](max) NULL,
    	[DateEnreg] [datetime] NULL,
    	[HeureEnreg] [datetime] NULL,
    	[Operateur] [nvarchar](15) NULL,
     CONSTRAINT [PK_t_contact] PRIMARY KEY CLUSTERED 
    (
    	[Contact] ASC
    )WITH (PAD_INDEX  = OFF, STATISTICS_NORECOMPUTE  = OFF, IGNORE_DUP_KEY = OFF, ALLOW_ROW_LOCKS  = ON, ALLOW_PAGE_LOCKS  = ON) ON [PRIMARY]
    ) ON [PRIMARY]
     
    GO
    pour afficher les données de la table:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
            Dim sqlCmd As New sqlCommand("Select Nom,Contact,dateenreg from t_contact where (dateenreg between '2013/01/01' and '2013/05/23')")
            Dim Dadpter As New sqlDataAdapter(sqlCmd)
            bTab = New DataTable
            Dset = New DataSet
            sqlCmd.Connection = sqlCONN
            Dadpter.Fill(Dset, bTable)
            bTab = Dset.Tables("t_contact")
    voilà. je crois que je n'ai rien oublié.

  16. #16
    Modérateur
    Avatar de DotNetMatt
    Homme Profil pro
    CTO
    Inscrit en
    Février 2010
    Messages
    3 611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : Etats-Unis

    Informations professionnelles :
    Activité : CTO
    Secteur : Finance

    Informations forums :
    Inscription : Février 2010
    Messages : 3 611
    Points : 9 743
    Points
    9 743
    Billets dans le blog
    3
    Par défaut
    Merci pour ces précisions ! Là le problème est assez facile à résoudre. SQL Server n'arrive pas à comprendre le format de date tel que tu l'as mis dans la clause WHERE (2013/05/23 par exemple).

    Il vaut mieux utiliser un format plus générique, tel que : 2013-05-23T00:00:00.

    Cependant, la meilleure solution reste d'utiliser des requêtes paramétrées. Ta requête deviendrait donc :
    Code SQL : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    SELECT   Nom
            ,Contact
            ,dateenreg
    FROM t_contact
    WHERE dateenreg BETWEEN @DateMin AND @DateMax
    Et dans ton code VB.NET :
    Code VB.NET : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim sqlCmd As New SqlCommand("SELECT Nom, Contact, dateenreg FROM t_contact WHERE dateenreg BETWEEN @DateMin AND @DateMax")
    sqlCmd.Parameters.AddWithValue("@DateMin", New DateTime(2013, 1, 1))
    sqlCmd.Parameters.AddWithValue("@DateMax", New DateTime(2013, 5, 23))
    Grâce aux paramètres, tu n'as pas besoin de te soucier du format de la date, c'est automatiquement géré par l'objet SqlCommand.
    Less Is More
    Pensez à utiliser les boutons , et les balises code
    Desole pour l'absence d'accents, clavier US oblige
    Celui qui pense qu'un professionnel coute cher n'a aucune idee de ce que peut lui couter un incompetent.

  17. #17
    Membre régulier
    Inscrit en
    Novembre 2005
    Messages
    337
    Détails du profil
    Informations forums :
    Inscription : Novembre 2005
    Messages : 337
    Points : 120
    Points
    120
    Par défaut
    Mille merci DotNetMatt

    ça marche à la perfection.
    et longue vie. on aura besoin de toi pour pour longtemps

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

Discussions similaires

  1. [CR 8] connexion de CR8 à une base de données Sql server 2008
    Par ensinienne dans le forum SAP Crystal Reports
    Réponses: 1
    Dernier message: 18/03/2013, 12h14
  2. fichier .mdf base de données sql server 2000 à 0Ko
    Par adel12 dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 15/03/2010, 18h01
  3. Réponses: 19
    Dernier message: 30/09/2008, 13h44
  4. Réponses: 3
    Dernier message: 10/07/2008, 11h43
  5. Réponses: 5
    Dernier message: 18/05/2007, 14h34

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