2011-02-24 5 views
2

Comment fonctionne le code ci-dessous? Je n'ai jamais vu une mise à jour faite de cette façon. Je fais toujours cette façon:Mettre à jour une table SQL Server

http://www.w3schools.com/sql/sql_update.asp


sqlText = "SELECT * FROM pricing WHERE pid=1" 
rsx.Open sqlText, cnx, 1, 2 

if Not rsx.EOF then 

    rsx("new_us") = Request.Form("new_us") 
    rsx("new_us_desc") = Rtrim(Request.Form("new_us_desc")) 
    rsx("new_ca") = Request.Form("new_ca") 
    rsx("new_ca_desc") = Rtrim(Request.Form("new_ca_desc")) 
    rsx("new_int") = Request.Form("new_int") 
    rsx("new_int_desc") = Rtrim(Request.Form("new_int_desc")) 
    rsx("conv_us") = Request.Form("conv_us") 
    rsx("conv_us_desc") = Rtrim(Request.Form("conv_us_desc")) 
    rsx("conv_ca") = Request.Form("conv_ca") 
    rsx("conv_ca_desc") = Rtrim(Request.Form("conv_ca_desc")) 
    rsx("conv_int") = Request.Form("conv_int") 
    rsx("conv_int_desc") = Rtrim(Request.Form("conv_int_desc")) 
    rsx("ren_us") = Request.Form("ren_us") 
    rsx("ren_us_desc") = Rtrim(Request.Form("ren_us_desc")) 
    rsx("ren_ca") = Request.Form("ren_ca") 
    rsx("ren_ca_desc") = Rtrim(Request.Form("ren_ca_desc")) 
    rsx("ren_int") = Request.Form("ren_int") 
    rsx("ren_int_desc") = Rtrim(Request.Form("ren_int_desc")) 
    rsx.Update 

end if 

rsx.Close 
cnx.Close 

Set rsx = Nothing 
Set cnx = Nothing 

Merci

Brett

+0

Désolé, le titre devrait être la table MS SQL. ..Merci –

+0

Dans quel type de fichier est-ce? Ce n'est pas seulement SQL, c'est SQL intégré dans un autre type de code. – Dubmun

+1

Ressemble à VB 5/6 ou classique ASP (vbscript) pour moi. – Dean

Répondre

1

D'abord, vous exécutez la requête avec rsx.Open. cnx est la connexion à la db, la valeur du paramètre 1 est CursorType = adOpenKeyset et la valeur du paramètre 2 est LockType = adLockPessimistic.

sqlText = "SELECT * FROM pricing WHERE pid=1" 
rsx.Open sqlText, cnx, 1, 2 

rsx est un Recordset (objet COM) qui contient les lignes renvoyées. if Not rsx.EOF then vérifie que vous avez réellement au moins une ligne, sinon l'édition échouera.

Cette rsx("new_us") = Request.Form("new_us") affecte de nouvelles valeurs aux champs du Recordset.

Enfin, rsx.Update enregistre les champs modifiés dans la base de données. Le fournisseur OLE DB utilisé par cnx génère l'instruction de mise à jour qui est envoyée à la base de données.

Ainsi, le flux de travail de base est:

  1. Lit une ligne de db
  2. Modifier la ligne
  3. Envoyer la rangée db
+0

Merci à vous deux pour les réponses. J'apprécie votre temps. –

0

Ce: http://www.w3schools.com/ado/ado_ref_recordset.asp devrait aider;)

Il s'agit d'un jeu d'enregistrements ADO (pas ADO.NET). A travers le jeu d'enregistrements (rsx dans ce cas), vous avez accès aux champs de votre requête. En modifiant la valeur, vous pouvez mettre à jour la base de données via la méthode Update.

+0

Oui, c'est ASP classique avec le SQL intégré dans une page ASP. –

+0

Ils ont commencé avec une instruction SELECT, vérifiés pour voir que l'enregistrement existait et ont ensuite mis à jour l'enregistrement. Serait-ce considéré comme le moyen optimal d'effectuer une mise à jour? Merci Brett –

+0

Je ne sais pas si c'est la meilleure façon, mais le grand avantage est que nous n'avons pas besoin de gérer l'implémentation de la mise à jour. Par contre, c'est une technologie assez ancienne maintenant, il vaut mieux se tourner vers ADO.NET qui est plus efficace. – Xavinou

Questions connexes