Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2258 connectés 

  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Table Access Liée à SQL Server par ODBC

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Table Access Liée à SQL Server par ODBC

n°1327359
katopex
Posté le 17-03-2006 à 14:06:41  profilanswer
 

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 :
  1. Private Sub Form_Current()
  2. '// Me!Project_ID est la clé primaire autoincrémentée dans access
  3. If IsNull(Me!Project_ID) Then
  4. '// on donne la valeur " " au champ Project_Prefix ce qui insere un enregistrement et donne la valeur incrémentée pour Project_ID
  5. Me!Project_Prefix = " "
  6.   DoCmd.Save
  7. End If
  8. 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


Message édité par katopex le 17-03-2006 à 14:58:55
mood
Publicité
Posté le 17-03-2006 à 14:06:41  profilanswer
 

n°1330990
katopex
Posté le 23-03-2006 à 13:16:24  profilanswer
 

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 :
  1. Private Sub Form_Current()
  2. '// Me!Project_ID est la clé primaire autoincrémentée dans access
  3. If IsNull(Me!Project_ID) Then
  4. '// on donne la valeur " " au champ Project_Prefix ce qui insere un enregistrement et donne la valeur incrémentée pour Project_ID
  5. Me!Project_Prefix = " "
  6.   DoCmd.Save
  7. End If
  8. End Sub


 
Je passais dans la fonction :
 

Code :
  1. Private Sub Form_BeforeUpdate(Cancel As Integer)
  2. Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me)
  3. 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 :
  1. Private Sub Form_BeforeUpdate(Cancel As Integer)
  2. 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 :
  1. Private Sub Form_AfterUpdate()
  2. Call find_changes("Project Details edited", Me.Project_ID, 0, 0, Me)   ' que j'ai donc déplacé dans mon code
  3. Forms!main!cmbProject.Requery
  4. 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 !!!
 
Merci encore


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  SQL/NoSQL

  Table Access Liée à SQL Server par ODBC

 

Sujets relatifs
Entity Relationship Diagram sous AccessMS SQL Server 2005 Sauvegarde des 5 dernieres versions de la BDD
[.NET] Binding champs de table bdd <=> propriété d'objetMa base Access grossit ... et ne maigrit jamais
Requete complexe sur access /sqlcréation de dll pour access
Petite question PHP/SQLAccess: Voir les bases de données
MS/SQL : affichage infos sur exec procedure stockee 
Plus de sujets relatifs à : Table Access Liée à SQL Server par ODBC


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR