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

MS SQL Server Discussion :

Table Access Liée à SQL Server par ODBC


Sujet :

MS SQL Server

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Points : 24
    Points
    24
    Par défaut Table Access Liée à SQL Server par ODBC
    Bonjour,

    J'avais une application qui tournait correctement sous Access, et j''ai voulu lier certaines tables dans SQL Server.

    Le problème étant que lorsque j'affectais une valeur à un champ (non clé primaire), avec Access, ma clé primaire était générée automatiquement et je la récupérait automatiquement aussi : (mon code Access)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Current()
     
    '// Me!Project_ID est la clé primaire autoincrémentée dans access
     
    If IsNull(Me!Project_ID) Then
     
    '// on donne la valeur " " au champ Project_Prefix ce qui insere un enregistrement et donne la valeur incrémentée pour Project_ID
     
    Me!Project_Prefix = " "
      DoCmd.Save
    End If
    End Sub
    Le Problème est que avec la table liée à SQL Server, l'incrément ne se fait pas à l'affectation de " " à un des champ de ma table, le Me!Project_ID reste à null (alors qu'il passait automatiquement à sa valeur incrémentée dans Access) et lorsque je passe à l'enregistrement de mes données de table, j'ai une erreur 94 "invalid use of null".

    Si quelqu'un à une idée de l'origine du problème ?
    Ou du code qui permettrait de mettre à jour la table, ou le recordset, cela fait 2 jours que cherche, je n'ai toujours rien trouvé.

    Merci

  2. #2
    Rédacteur/Modérateur

    Avatar de Fabien Celaia
    Homme Profil pro
    Administrateur de base de données
    Inscrit en
    Octobre 2002
    Messages
    4 222
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 53
    Localisation : Suisse

    Informations professionnelles :
    Activité : Administrateur de base de données
    Secteur : Service public

    Informations forums :
    Inscription : Octobre 2002
    Messages : 4 222
    Points : 19 554
    Points
    19 554
    Billets dans le blog
    25
    Par défaut
    Il ne faut pas citer le champ incrément lors de l'insert.
    Sr DBA Oracle / MS-SQL / MySQL / Postgresql / SAP-Sybase / Informix / DB2

    N'oublie pas de consulter mes articles, mon blog, les cours et les FAQ SGBD

    Attention : pas de réponse technique par MP : pensez aux autres, passez par les forums !

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    En fait j'ai réussi à récupérer automatiquement l'ID mais pas au même moment, il semblerait que l'update de la table ne se fasse qu'après un BeforeUpdate dans SQL Server (alors que c'est instantané avec Access).

    Je m'explique :

    Après ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Private Sub Form_Current()
     
    '// Me!Project_ID est la clé primaire autoincrémentée dans access
     
    If IsNull(Me!Project_ID) Then
     
    '// on donne la valeur " " au champ Project_Prefix ce qui insere un enregistrement et donne la valeur incrémentée pour Project_ID
     
    Me!Project_Prefix = " "
      DoCmd.Save
    End If
    End Sub
    Je passais dans la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Form_BeforeUpdate(Cancel As Integer)
     Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me)
    End Sub
    Et là, la fonction find_changes plantait à cause de Me.Project_ID à null.

    Or si (j'enlève la fonction find_changes) et je remplace par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Private Sub Form_BeforeUpdate(Cancel As Integer)
    End Sub
    Là, mon ID est récupéré, la table a bien été mise à jour, et je peut lancer la fonction find_changes dans le Form_AfterUpdate.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub Form_AfterUpdate()
    Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me)   ' que j'ai donc déplacé dans mon code
    Forms!main!cmbProject.Requery
     
    End Sub
    Je suppose que cela vient du fonction de SQL Server, ou ODBC, mais j'aurai souhaiter récupérer l'auto-incrément plus tôt, si vous avez une idée, sinon, on se contentera de ca.

    Merci encore

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Mars 2006
    Messages
    34
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2006
    Messages : 34
    Points : 24
    Points
    24
    Par défaut
    Donc toujours pas de réponses ???

    Je n'ai pas compris la réponse de fadace.

    Je suppose que je dois être le seul à avoir le problème, ca m'aurait bien interressé quand-même de savoir comment mettre à jour avant le BeforeUpdate.

    Merci

Discussions similaires

  1. Réponses: 4
    Dernier message: 02/08/2012, 19h58
  2. Réponses: 0
    Dernier message: 16/04/2010, 18h45
  3. Importer une table Access Vers Sql Server
    Par Rock01 dans le forum MS SQL Server
    Réponses: 3
    Dernier message: 06/11/2008, 08h00
  4. Access 2003 - Sql Server Express / ODBC
    Par gridin dans le forum Requêtes et SQL.
    Réponses: 0
    Dernier message: 19/11/2007, 15h31
  5. MAJ d'une table sous SQL Server par insertion
    Par keish dans le forum Langage SQL
    Réponses: 6
    Dernier message: 11/06/2003, 16h23

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