[SQL / Excel] 100 grosses requêtes à faire et VBA ne veut pas

100 grosses requêtes à faire et VBA ne veut pas [SQL / Excel] - SQL/NoSQL - Programmation

Marsh Posté le 24-10-2008 à 16:41:30    

Bonjour,
 
Je dois régulièrement importer les résultats de 100 requêtes SQL dans Excel.  
J'ai essayé d'utiliser VBA et ODBC pour faire une macro mais certaines requétes sont trop "tordues" et ça ne passe pas.  
Y'aurait-il un programme qui permette de faire des requêtes à la chaîne et de tout envoyer vers Excel?  
J'ai bien vu SQL batch suite sur google mais ce n'est qu'un shareware, le site du créateur est fermé et il est donc impossible d'acheter la version définitive...
 
Merci!

Reply

Marsh Posté le 24-10-2008 à 16:41:30   

Reply

Marsh Posté le 24-10-2008 à 17:15:54    

rien à voir avec SQL, tout dépend de la manière dont tu veux le faire et avec quoi
perso j'aurais fait un script perl qui permettrait de prendre une requête SQL en paramètre et qui ressort le résultat au format CSV

Reply

Marsh Posté le 24-10-2008 à 21:11:38    

Excel gère très bien les requêtes SQL, même tordues !! tu pourrais faire voir ton code VBA et ta requête ?

Reply

Marsh Posté le 24-10-2008 à 22:21:44    

Merci pour votre aide!
Bah mon code c'est du truc de bourrin qui connait rien VBA (macro enregistrée quoi :o)

With ActiveSheet.QueryTables.Add(Connection:=Array(Array( _
        "ODBC;DSN=Firebird;Driver=Firebird/InterBase(r) driver;Dbname=server:C:\interbase.Ib;CHARSET" _
        ), Array("=NONE;;UID=admin" )), Destination:=Range("A1" ))
        .CommandText = Array( _
        "select sum((amccomprimento/1000000)*(amclargura/1000000)*m.medvalormm*c.cambitola/1000*amcpecas)" & Chr(13) & "" & Chr(10) & "from amarrado a, cabamarra c, medidas m, amacelulas ac, producaoindustrial pi, prodindamarrado pa, ind" _
        , _
        "ustrializacao i" & Chr(13) & "" & Chr(10) & "where pi.pridata between '05/01/2008' and '05/31/2008'" & Chr(13) & "" & Chr(10) & "and (pi.maqcodigo=44 or pi.maqcodigo=41)" & Chr(13) & "" & Chr(10) & "and pa.piaentsai='E'" & Chr(13) & "" & Chr(10) & "and piaindproduto = i.indcodigo" & Chr(13) & "" & Chr(10) & "and pi.pricodigo=pa.pricodigo" & Chr(13) & "" _
        , _
        "" & Chr(10) & "and pa.amacodigo=a.amacodigo" & Chr(13) & "" & Chr(10) & "and a.indcodigo=1" & Chr(13) & "" & Chr(10) & "and i.sticodigo=2" & Chr(13) & "" & Chr(10) & "and pi.ultatualizacao > '04/01/2008'" & Chr(13) & "" & Chr(10) & "and a.amacodigo=ac.amacodigo " & Chr(13) & "" & Chr(10) & "and a.camcodigo=c.camcodigo " & Chr(13) & "" & Chr(10) & "and c.medbit=m.medcodigo " & Chr(13) & "" & Chr(10) & "and a" _
        , "mccomprimento>=2100000" & Chr(13) & "" & Chr(10) & "and camtipo not in ('M', '2', 'S', '3')" )
        .Name = "interbase"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .BackgroundQuery = True
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .PreserveColumnInfo = True
        .Refresh BackgroundQuery:=False
    End With


MS query me retourne un résultat nul alors que le résultat... n'est pas nul.


Message édité par JacenX le 24-10-2008 à 22:22:27

---------------
Light Years Away.
Reply

Marsh Posté le 26-10-2008 à 13:51:41    

et avec une requête plus simple, il te retourne qq chose ?
le truc que je me dit... c'est est-ce que le format de date est bien pris en compte entre autre... ?
 
(c'est des italiens qui ont fait la base de données ???)

Reply

Marsh Posté le 26-10-2008 à 16:16:39    

oui avec des requêtes simples j'ai les résultats escomptés.


---------------
Light Years Away.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed