Requete Access

Résolu
Mike490 Messages postés 25 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 29 octobre 2010 - 2 déc. 2009 à 08:59
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 - 2 déc. 2009 à 09:58
Bonjour à tous.

Je travail sur une aplli web en ASP.NET/C# et je souhaiterai manipuler des requetes d'une BDD Access en javascript.

J'arrive à ouvrir ma BDD Access et une requete (selectionné dans une grille asp) afin de la modifier et/ou de l'executer.

Je souhaiterai savoir si il est possible de créer une requete Access en javascript.

Voici mon code :
<script type="text/javascript">           
        
function UltraWebGrid1_AfterRowActivateHandler(gridName, rowId){	
row = igtbl_getRowById(rowId);    
}

        function runaccess(action) {
          if (row != null) {
              form_query = row.getCell(4).getValue();
              type_query = row.getCell(6).getValue();
              nom_query = row.getCell(1).getValue();
              queryname = "R_" + form_query.substr(2) + "_" + type_query + "_" + nom_query;
             
              var AccessApp = new ActiveXObject("Access.Application");
              AccessApp.Visible = false;
              AccessApp.UserControl = true;
              AccessApp.OpenCurrentDatabase("c:\\MaBDDAccess.mdb");

              switch (action) {
                  case 'run':
             
                      var numoc = '<%=Session["num_oc"]%>';
                                                            
                      var DAO;
                      var Qry;
                      var strsqlbefore = "";
                      var strsqlafter = "";
                      var Bs;
                      
                      Bs = AccessApp.CurrentDb();
                      DAO = new ActiveXObject("DAO.DBEngine.36");
                      
                      Qry = DAO.workspaces(0).openDatabase("c:\\MaBDDAccess.mdb").QueryDefs(queryname).SQL;                                                        
                      strsqlbefore = DAO.workspaces(0).openDatabase("c:\\MaBDDAccess.mdb").QueryDefs(queryname).SQL;
                     
                      strsqlafter = strsqlbefore.replace("num_oc()", numoc);
                      DAO.workspaces(0).openDatabase("c:\\MaBDDAccess.mdb").QueryDefs(queryname).SQL = strsqlafter;
                      DAO.Close;
                      AccessApp.Application.Quit();
                    
                      var AccessApp = new ActiveXObject("Access.Application");
                      AccessApp.Visible = false;
                      AccessApp.UserControl = true;
                      AccessApp.OpenCurrentDatabase("c:\\MaBDDAccess.mdb");
                      AccessApp.DoCmd.OpenQuery(queryname, 0, 1);
                      DAO.workspaces(0).openDatabase("c:\\MaBDDAccess.mdb").QueryDefs(queryname).SQL = strsqlbefore;
                      AccessApp.Application.Quit();
                      break;
                      
                  case 'modify': 

                      AccessApp.DoCmd.OpenQuery(queryname, 1, 1);
                      break;

                  case 'create':

                      // AccessApp.DoCmd.CopyObject(queryname + "_copy", acQuery, queryname);
                      break;
              }
}
    </script>


bouton asp :

    
    


Comme vous pouvez le voir j'essaye de dupliquer une requete dans le case 'create' mais il y a une erreur sur le "acQuery".

Aidez-moi svp et merci d'avance.

7 réponses

tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
2 déc. 2009 à 09:41
ce que je comprends de ton code est de créer une requête dans la base Access pour une utilisation ultérieure. Le code de Bul3 permet de créer une requête pour extraire immédiatement les données correspondantes. A toi de faire en fonction de tes objectifs.

Pour CopyObject, il y a un premier argument facultatif : essaie de l'ajouter.

AccessApp.DoCmd.CopyObject("c:\\MaBDDAccess.mdb", queryname + "_copy", 1, queryname);


thip
3
tpoinsot Messages postés 345 Date d'inscription mardi 1 juin 2004 Statut Membre Dernière intervention 17 octobre 2014 4
2 déc. 2009 à 09:08
bonjour,

acQuery c'est une constante Access définie dans VBA, non? il faut remplacer par sa valeur. c'est 1, je crois.

thip
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
2 déc. 2009 à 09:12
Bonjour,
oui, mais c'est exclusif IE

var db =new ActiveXObject( "ADODB.Recordset" );	
var driver = "Driver={Microsoft Access Driver (*.mdb)};";
var connect = driver + "DBQ="+nom de la base;
var sql="SELECT * FROM ??? WHERE ??? ";
db.Open( sql, connect );
if ( db.EOF )	{	}
db.Close();

driver est à modifier en fonction de où est la base
( locale, serveur ... )
pour être compatible multi-navigateurs,
ces requêtes sont faites avec les langages
sur le serveur
vous semblez utilisez Acces.Application,
ce doit être possible aussi "de ce coté là",
mais je n'ai plus la manière de faire ni
en tête ni sur une doc quelconque.
Cordialement
0
Mike490 Messages postés 25 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 29 octobre 2010
2 déc. 2009 à 09:20
Salut tpoinsot et merci pour ta reponse.

En effet il faut remplacer acQuery par sa valeur, je ne sais pas si c'est 1 mais j'ai testé et il n'y a plus d'erreur sauf que je ne vois pas la copie de ma requete.

(Cette erreur viens du fait que j'ai repris le code d'un collegue et que je ne maîtrise pas vraiment se langage.)

Faut-il procéder autrement ?
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Mike490 Messages postés 25 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 29 octobre 2010
2 déc. 2009 à 09:24
Merci Bul3 pour ta suggestion, je fais des tests et je te tiens au courant.
0
Mike490 Messages postés 25 Date d'inscription jeudi 2 juillet 2009 Statut Membre Dernière intervention 29 octobre 2010
2 déc. 2009 à 09:52
YESSS, cool ca marche merci tpoinsot c'est nikel.

Merci à toi également Bul3, ton code peu peut-être me servir pour plus tard.
0
Bul3 Messages postés 4933 Date d'inscription samedi 1 juillet 2006 Statut Membre Dernière intervention 2 février 2015 16
2 déc. 2009 à 09:58
exactement, pour tout, tpoinsot
je vais conserver précieusement cette fois
la manière de faire avec Acces.Application
0
Rejoignez-nous