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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Accès source externe depuis un script VB

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

Accès source externe depuis un script VB

n°1316053
Flipper94
Posté le 01-03-2006 à 12:43:41  profilanswer
 

Pour des raisons diverses , je dois faire une appli sans trop de fioritures (jetable) et j'ai choisi de stocker mes données dans des feuilles EXCEL manipulées par des UserForms de VB.
Débutant dans l'environnement, sans bouquin,  je scrutte les forums, je progresse mais j'ai des manques .
 
Cahier des charges :
 - Un demandeur (données identitaires stockées dans une base SQL)
 - un dossier stockée dans une feuille Excel
 - des lignes sur ce dossier ( Ex ; 1 commande , des produits (Nb , Mtt)
 - des tables de parametres (Ex code et libelle produit)
Bref une petite base de données (20 à 50 dossiers)
 
Mes besoins  
1- Acces à la source externe depuis un script VB
   j'ai une source externe dans ma feuille Excel qui rapatrie correctement
   J'ai crée une macro pour permettre l'actualisation des données par un bouton dans la barre à outils.
   J'ai voulu lancer la macro depuis une Userform : le compilateur ne comprend pas . C'est logique ? Ca ne se fait pas ?
   Mais je prefère executer la requete depuis un script dans une UserForm apres que l'utilisateur a saisi l'identifiant des demandeurs dans un champ texte du  formulaire .  
   1-1 J'ai teste la querytables pour ecrire directement dans la feuille  
        Ca ne marche pas bien ,  
-------------------script---
 
         Sheets("parametre" ).Activate
sqlstring = "SELECT DISTINCT V.NO_PACAGE, V.CODE_CIVILITE," _
& " V.NOM , V.LIBELLE_ADR, " _
& " V.CODE_INSEE_COMMUNE , COM.COM_LB" _
& " FROM ARCHE.dbo.COM C, ARCHE.dbo.VA_COORDONNEES_USAGER V" _
& " WHERE V.CODE_INSEE_COMMUNE = C.COM_RFA " _
& " AND V.NO_PACAGE= '" & NO_PACAGE.Text & "' AND V.ADR_EXPLOITATION_ON=1 " _
& " ORDER BY V.NO_PACAGE"
connstring = _
    "ODBC;DSN=ARCHE;UID=consult;PWD=consult;Database=ARCHE"
With ActiveSheet.QueryTables.Add(Connection:=connstring, _
        Destination:=Range("A25" ), Sql:=sqlstring)
 'MsgBox (sqlstring)
 '   .Refresh
End With
 
J'ecris bien dans la feuille mais uniquement des entetes , qui ne reprennent pas les noms de colonnes et qui me cree des colonnes dans la feuille ; bref j'ai pas tout compris
   
      1-2  Je prefère un objet SQLquery (comme en delphi ) avec des propriétes la requete de type string, une methode retrieve , un resultset qu'on pourrait manipuler .
    J'ai repérer SQLrequest triggé apres un evt change sur le textbox identifiant
       returnArray = SQLRequest(connstring, sqlstring, _
                      Worksheets("parametre" ).Range("A25" ), _
            2, True)
         Erreur à l'exec ; sub ou fonction non défini (pourtant elle existe dans l'aide)
         Fait-il installer quelque chose ?
        ou SQL.request  
          SQL.request(connstring,A25,4,sqlstring,true)
         Cette commande devrait renvoyer quelque chose mais je ne connais pas la structure du resultset (un tableau ? une matrice ?déclaré comment ,le nb de colonnes doit correspondre au nb ramené ?)
         
    Bref j'ai un souci d'implémentation, ll'EVT change est inadapté (il trigge à chaque caractère)
  et je souhaite une solution simple  
      --> un bon evenement
       --> un ordre SQL (ouvrir ou pas l'objet (SQLOpen)
       --> un result set identifié
       --> une manip du resultset dans des champs de mon formulaire
 
2- Utilisation de fonction Excel dans un formulaire  
     table parametre code libelle nommé enjeux
      libelle nommé et source d'un controle liste dans mon formulaire
       Je veux recuperer le code  
       Dans ma feuille ca marche code=INDEX(parametre!enjeux;H15+1;1)
     
 dans mon code VB apres sélection d'item dans la liste  
       codeenjeu.Value = Application.WorksheetFunction.Index("parametre!enjeux", Lig - 5, 1)
   Erreur 1004 impossible de lire la propriété Index .
    J'ai oublié quelque chose ? activer la feuille ?
        Bref bien dommage  
   Si on peut me brieffer  
 
3- Enfin : code pour créer directement une source ODBC dans les sources ODBCsans passer par les outils d'administration (les utilisateurs ne sont pas autonomes)  
 
Merci à tous d'avance
 
     
 
 
     

mood
Publicité
Posté le 01-03-2006 à 12:43:41  profilanswer
 

n°1317625
tegu
Posté le 03-03-2006 à 11:14:45  profilanswer
 

Beaucoup de questions :)
Pour le 1/ tu dis que le « compilateur ne comprends pas ». C'est-à-dire ? Quelle erreur et sur quelle ligne ? Ta macro est une Sub() d'un module donc elle devrait parfaitement fonctionner en l'appelant directement depuis un UserForm.
 
Edit:
As-tu essayé de faire la manipulation d'importation de tes données avec l'enregsitreur de macro activé pour être sûr des syntaxes, notamment pour d'éventuels paramètres de .QueryTables ?

Message cité 2 fois
Message édité par tegu le 03-03-2006 à 11:20:18
n°1317861
Flipper94
Posté le 03-03-2006 à 15:29:43  profilanswer
 

tegu a écrit :

Beaucoup de questions :)
Pour le 1/ tu dis que le « compilateur ne comprends pas ». C'est-à-dire ? Quelle erreur et sur quelle ligne ? Ta macro est une Sub() d'un module donc elle devrait parfaitement fonctionner en l'appelant directement depuis un UserForm.
 
Edit:
As-tu essayé de faire la manipulation d'importation de tes données avec l'enregsitreur de macro activé pour être sûr des syntaxes, notamment pour d'éventuels paramètres de .QueryTables ?


 
Ok , il y avait un léger probleme sur ma requete (j'ai ecrit la chaine dans un fichier, je l'ai testé avec mon outil SQL) et j'utilisais une propriéte text au lieu de value
Pb : il y a bien écriture dans une feuille Excel activée , mais il m'insère de facto des colonnes.
Or , c'est idiot mais, dans mon code je lis ces colonnes pour les afficher dans ma UserForm pour que l'utilisateur corrige eventuellement (les data seront récrites dans ma feuille de dossiers) .
Donc au dossier suivant , je décale, etc.....
Donc le fonctionnement est différent de ma macro qui se positionne sur la cellule ou j'ai attaché une source externe et qui actualise  
Donc soit on peut ecraser les colonnes existantes
 
Soit j'exploite un objet query (SQLrequest ?)
 
 

n°1317865
Flipper94
Posté le 03-03-2006 à 15:34:49  profilanswer
 

tegu a écrit :

Beaucoup de questions :)
Pour le 1/ tu dis que le « compilateur ne comprends pas ». C'est-à-dire ? Quelle erreur et sur quelle ligne ? Ta macro est une Sub() d'un module donc elle devrait parfaitement fonctionner en l'appelant directement depuis un UserForm.
 
Edit:
As-tu essayé de faire la manipulation d'importation de tes données avec l'enregsitreur de macro activé pour être sûr des syntaxes, notamment pour d'éventuels paramètres de .QueryTables ?


 
Pour le compilateur : ij'ai mis dans un script d'ouverture de l'UserForm un appel à ma macro
   worksheet("parametre" ).IdentiteUsager() ' (identiteUsager est la macro)
     Le compilateur ne comprend pas !
   En fait peut-on appeler une macro depuis un script , et comment ?
   du style objet(activé).macro() ??

n°1317901
Flipper94
Posté le 03-03-2006 à 15:59:12  profilanswer
 

Flipper94 a écrit :

Ok , il y avait un léger probleme sur ma requete (j'ai ecrit la chaine dans un fichier, je l'ai testé avec mon outil SQL) et j'utilisais une propriéte text au lieu de value
Pb : il y a bien écriture dans une feuille Excel activée , mais il m'insère de facto des colonnes.
Or , c'est idiot mais, dans mon code je lis ces colonnes pour les afficher dans ma UserForm pour que l'utilisateur corrige eventuellement (les data seront récrites dans ma feuille de dossiers) .
Donc au dossier suivant , je décale, etc.....
Donc le fonctionnement est différent de ma macro qui se positionne sur la cellule ou j'ai attaché une source externe et qui actualise  
Donc soit on peut ecraser les colonnes existantes
 
Soit j'exploite un objet query (SQLrequest ?)


-----------------------
 :wahoo: J'ai trouvé une propriété du querytables ecrase . Je peux m'appuyerr dessus pour nourrir mes champs sur ma Usf .
Bingo
 
 


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  Accès source externe depuis un script VB

 

Sujets relatifs
accès base de donnéeProblème avec Win 2000 et script de config de proxy automatique
Test de mon script de cryptageMySql : jointure externe
executer un script sqlTextarea et texte externe j'y arrive tjs pas aidez moi svp
script php annuaire avec ajout photoprobleme config source de données odbc pour oracle XE
pb script de paiementSupprimer l'accès anonyme
Plus de sujets relatifs à : Accès source externe depuis un script VB


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