Update SQL Server depuis macro Excel

Résolu
dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010 - 5 mai 2005 à 14:03
dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010 - 18 mai 2005 à 16:39
Bonjour,

Je récupère certaines infos de tables SQL dans un tableau EXCEL

à l'aide de la macro ci-dessous :



Private Sub CommandButton1_Click()



' ***** DEMANDE L'ACTIVATION DU COMPOSANT MICROSOFT ACTIVEX DATA OBJECT 2.7 LIBRARY

' ***** DEPUIS MENU "OUTILS" - "RÉFÉRENCES"



Dim Cnx As New ADODB.Connection

Dim Rst As New ADODB.Recordset

Dim Année As String * 4

Dim Mois As String * 2

Dim Jour As String * 2

Dim AMJ As String * 8

Dim ValC1 As String * 8

Dim ValC2 As String * 10

Dim Req1 As String

Dim Req2 As String

Dim Compt As Integer

Dim ExtA As String * 4

Dim ExtM As String * 2

Dim ExtJ As String * 2

Dim SurD As String * 3

Année = TextBox1

Mois = TextBox2

Jour = TextBox3

AMJ = Année & Mois & Jour



' ***** INSTRUCTIONS DE SÉLECTION DES CHAMPS ET DE JOINTURE *****

Req1 = "select d.inputdate, cu.inv_name, c.sit_name, c.sit_town, a.ct_name, a.ct_town, d.dwgbbsnum, "

Req1 = Req1 & "d.esrc_file, d.rc_num, r.ps_code, r.fabweight, d.delivstart, r.cust_ref from dwgbbs as d "

Req1 Req1 & "join ref_ps as r on r.esrc_file
d.esrc_file and r.rc_num d.rc_num and r.ps_title d.dwgbbsnum "

Req1 Req1 & "join contract as c on c.esrc_file d.esrc_file and c.rc_num = d.rc_num "

Req1 = Req1 & "left join contradr as a on
a.esrc_file d.esrc_file and a.es_num d.es_num and a.seq_num =
r.addr_num "

Req1 Req1 & "join customer as cu on cu.cust_code c.cust_code"



' ***** SÉLECTION SELON DATE SAISIE DANS LE FORMULAIRE *****

Req2 "where d.esrc_file 'cht05' and d.rc_num <> 5 and d.inputdate = " & AMJ

Req1 = Req1 & " " & Req2



' ***** OUVERTURE DE LA BASE *****

Cnx.Open "Provider=SQLOLEDB.1;Integrated Security=SSPI;Initial Catalog=Favre;Data Source=Serveur-corc"



' ***** RECHERCHE DE LA DERNIÈRE CELLULE NON VIDE *****

Range("A10000").Select

Selection.End(xlUp).Select



' ***** OUVERTURE DU RECORDSET *****

Rst.Open Req1, Cnx, adOpenKeyset



' ***** COPIE DU RECORDSET DEPUIS LA LIGNE SUIVANTE *****

ActiveCell.Offset(1, 0).CopyFromRecordset Rst



' ***** FERMETURE ET VIDAGE *****

Rst.Close: Set Rst = Nothing

Cnx.Close: Set Cnx = Nothing

Unload UserForm1

Application.ScreenUpdating = True

End Sub


Cela fonctionne très bien, mais je ne peux le faire qu'une fois par jour.

Je désire utiliser un champ comme marqueur pour permettre une mise

à jour à la demande. Je dispose du code SQL nécessaire :

update nom_table set nom_champ_à_modifier = 1

where esrc_file 'cht05' and inputdate 20050503 and rc_num <> 5

and nom_champ_à_modifier <> 1


Problème : je n'arrive pas à insérer ce code dans ma macro.

Qui peut m'indiquer comment y parvenir ? Merci d'avance.


Bon(nes) courage, développement, salutations...
(choisissez ce qui vous convient) dp

1 réponse

dp_favresa Messages postés 132 Date d'inscription vendredi 23 juillet 2004 Statut Membre Dernière intervention 11 mai 2010
18 mai 2005 à 16:39
Il faut insérer le code suivant avant "FERMETURE ET VIDAGE"



' ***** MISE A JOUR DU FLAG *****

Req2 "update dwgbbs set excel_planning 1"

Req2 Req2 & "where esrc_file 'cht05' and rc_num <> 5 and inputdate = " & AMJ

Cnx.Execute Req2, adExecuteNoRecords




Bon(nes) courage, développement, salutations...

(choisissez ce qui vous convient) dp
3
Rejoignez-nous