Question

Je ne parviens pas à récupérer la dernière de mon identifiant Inséré SQL Server 2000 db en utilisant un ensemble de données typé dans asp.NET

J'ai créé un TableAdapter et je coché la case « Actualiser datatable » et « Générer Insertion, mise à jour et supprimer des instructions ». Cette auto-génère le remplissage et les méthodes GetData, et Insert, Update, sélectionnez et supprimer des instructions.

J'ai essayé toutes les solutions possibles dans ce fil

http://forums.asp.net/t/990365.aspx

mais je suis toujours unsuccesfull, il retourne toujours 1 (= nombre de lignes affectées). Je ne veux pas créer une méthode d'insertion séparée comme InsertCommand généré automatiquement convient parfaitement à mes besoins.

Comme suggéré dans le fil ci-dessus, j'ai essayé de mettre à jour la syntaxe InsertCommand SQL pour ajouter SELECT SCOPY_IDENTITY () ou quelque chose de semblable, je l'ai essayé d'ajouter un paramètre de type ReturnValue, mais tout ce que je reçois est le nombre de lignes affectées .

Quelqu'un a une opinion différente à ce sujet? Merci d'avance! Stijn

Était-ce utile?

La solution

J'ai trouvé un moyen d'obtenir l'identifiant supplémentaire après insertion en utilisant mon adaptateur de table.

Mon approche est un peu différente, j'utilise une procédure de magasin pour faire l'insert, donc ma commande d'insertion a toutes les valeurs, mais l'ID, je fait le sp retourner l'ID appelant simplement:  SET @ ID = SCOPE_IDENTITY () puis  COMMIT TRAN et la dernière ligne sera  RETOUR @ID

Alors je cherchai mes paramètres de l'adaptateur de table pour InsertCommand et définir les @RETURNVALUE à la colonne de l'ID supplémentaire de la table, alors quand il est exécuté automatiquement mis à la valeur de retour sur le champ id.

Hope this help

Autres conseils

J'ai décidé de renoncer, je ne peux pas se permettre de perdre plus de temps à ce sujet. J'utilise l'instruction Insérer après que je fais une requête de sélection MAX (id) à hget l'ID d'insertion

Si quelqu'un doit avoir une solution, je serai heureux de le lire ici

Merci Stijn

  

Vous devez indiquer table adaptateur de votre table pour actualiser la   données table après mise à jour / opération d'insertion.   Voici comment vous pouvez le faire.

  1. Ouvrir les propriétés de TableAdapter -> Par défaut Sélectionnez Requête -> Options Advnaced . et vérifiez l'option Actualiser la table de données . Enregistrer l'adaptateur maintenant. Maintenant, lorsque vous appelez la mise à jour sur la table adaptateur, la table de données seront mis à jour [rafraichir] après l'opération de mise à jour / insert et reflètent les dernières valeurs de la table de base de données. si la clé primaire ou tout coloumn est réglé sur auto-incrément, la table de données aura les dernière valeur après la mise à jour récente.

  2. Vous pouvez maintenant appeler la mise à jour comme TableAdapterObj.Update (ds.dataTable);

  3. Lire les dernières valeurs des coloumns DataTable (ds.dataTable) et attribuer des valeurs respectives dans la table des enfants avant mise à jour / insertion . Cela fonctionne exactement comme vous le voulez.

texte alt http://ruchitsurati.net/files/tds1.png

Licencié sous: CC-BY-SA avec attribution
Non affilié à StackOverflow
scroll top