2010-06-16 5 views
0

dans ASP Classic. MS-Access DB.SQL SELECT a inséré les données du tableau

i do: INSERT INTO Orders (userId) VALUES (123)"

ce que je veux récupérer est orderNumber de cette ligne. C'est un numéro d'auto-incrémentation.

donc je l'ai fait: SELECT orderNumber FROM Orders WHERE userId=123

mais comme il est sur la même page, le rendement SELECT: BOF ou EOF est vrai, ou l'enregistrement en cours a été supprimé. L'opération demandée nécessite un enregistrement en cours.

je l'ai vu quelque part RETURNING orderNumber as variable mais il était pour oracle et je ne sais pas comment le mettre en œuvre dans mon asp :(

set addOrder = Server.CreateObject("ADODB.Command") 
     addOrder.ActiveConnection = MM_KerenDB_STRING 
     addOrder.CommandText = "INSERT INTO Orders (userId) VALUES ("&userId&")" 
     addOrder.CommandType = 1 
     addOrder.CommandTimeout = 0 
     addOrder.Prepared = true 
     addOrder.Execute() 

Dim getOrderNumber 
Set getOrderNumber = Server.CreateObject("ADODB.Recordset") 
     getOrderNumber.ActiveConnection = MM_KerenDB_STRING 
     getOrderNumber.Source = "SELECT orderNumber FROM Orders WHERE userId=" & userId 
     getOrderNumber.CursorType = 0 
     getOrderNumber.CursorLocation = 2 
     getOrderNumber.LockType = 1 
     getOrderNumber.Open() 

        session("orderNumber") = getOrderNumber.Fields.Item("orderNumber").value 
+0

Pouvons-nous voir une partie du code ASP que vous utilisez pour réellement exécuter l'instruction SQL? –

+0

désolé, je supposais (WRONG) que ce n'était pas pertinent –

+0

Est-ce que la première instruction réellement entrer des données dans votre table? Je veux m'assurer que ce n'est pas un problème avec la première déclaration. Donc, lorsque vous exécutez la page et obtenez l'erreur est-il des données dans votre base de données d'accès? –

Répondre

1

Voici peut être utile si vous utilisez leur méthode d'ajouter enregistrements à l'aide d'objets ADO.

http://support.microsoft.com/kb/221931

Mais sans vous voir réellement le code ASP classique, il est difficile de vous donner une réponse appropriée.

+0

pour une raison étrange mon code semble complètement différent de celui que vous avez pointé dans le lien ..:/je me sens stupide .. c'est ce que maccromedia m'a donné .. puis-je faire mieux? :) –

+0

@Noam Il existe plusieurs façons de travailler avec des données dans ASP classique. Vous pouvez utiliser les objets ADODB.Command pour insérer/supprimer/mettre à jour/sélectionner des enregistrements ou vous pouvez faire la même chose avec les objets ADODB.RecordSet. Macromedia semble utiliser des commandes pour l'insertion et des jeux d'enregistrements pour la sélection. Notez que lorsque vous utilisez des commandes pour sélectionner, vous récupérez toujours des jeux d'enregistrements. –

+0

J'ai fait ce qui était dans votre lien et cela a fonctionné :) depuis que j'ai toujours détesté macromedia le faire pour moi, je pense que son temps je comprends vraiment plus de ce que ce code fait réellement. pouvez-vous me dire où je peux lire à ce sujet? et les différences entre la commande et le jeu d'enregistrements. –