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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  les requêtes en Visual Basic

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

les requêtes en Visual Basic

n°1370422
darki666
Posté le 19-05-2006 à 11:39:20  profilanswer
 

bonjour a tous
 
voila mon probleme :  
 
je suis en premiere année de bts IG et la je suis en train de faire mon stage.
pour se stage il me faut pouvoir ecrir des requêtes en VBA alors que je n'est jamais fait de vba jusqu'a présent :pt1cable: [:atog]
si quelqun de vous s'y connait un peu ou connaiterait un site qui explique les bases pour inclure le sql dans le vba sa m'aiderai bcp :lol:  
 
merci d'avance

mood
Publicité
Posté le 19-05-2006 à 11:39:20  profilanswer
 

n°1370453
kiki29
Posté le 19-05-2006 à 12:00:39  profilanswer
 

C'est du VB6 mais aisement transposable en VBA
http://www.vb-helper.com/AdoTalk/AdoTalk.zip
et la dedans particulierement l'exemple QueryFld.vbp
il te restera a ajouter la sauvegarde des requêtes sous forme de fichiers *.ini par exemple, ajouter des criteres de tris

n°1370540
darki666
Posté le 19-05-2006 à 14:01:00  profilanswer
 

merci beaucoup pour ce site je vais voir ske sa donne
merci encor

n°1370627
kiki29
Posté le 19-05-2006 à 15:18:51  profilanswer
 

Autrement sous Excel par exemple Menu Données/Données Externes/Créer des requêtes ( nécessite MS Query )

n°1370755
darki666
Posté le 19-05-2006 à 16:49:08  profilanswer
 

je sais mais mon maitre de stage ma interdit de me servir de ms query ce *********!!!!mdr
 
sa marche comment le ado talk.zip l'ordi ne reconné ocun fichier et qd je les ouvre en document texte sa me paré vraiment complexe pour debuter lol
 
si t'a d'autres infos a donnée je suis preneur
 
merci encor
@++

n°1370773
kiki29
Posté le 19-05-2006 à 17:10:39  profilanswer
 

cela veut dire que tu n'as pas VB6 d'installé sur ton PC
 
Il doit vouloir que tu utilises des fonctions du style SQL.REQUEST dispo sous Excel
 
MS Query te permettrait via le macro recorder de voir la syntaxe à adopter


Message édité par kiki29 le 19-05-2006 à 17:41:27
n°1371846
darki666
Posté le 22-05-2006 à 08:21:26  profilanswer
 

Merci mais en fait il veut que je travail sur une base access directement sous excel par le biais du sql sans passer par MSQUERY mais par du code VBA
 
il faut que je me serve des composants ABODB.Connection
ABODB.Recordset
ABODB.field
voila j'ai réussi a importer la BD table par table par du code sans utilser le sql mais maintenant il faut que j'importe certaines donnée donc je dois faire des requètes
 
voila.
PS : de plus MS QUERY n'est po installer donc je peu meme po l'utiliser

n°1372394
kiki29
Posté le 22-05-2006 à 17:31:51  profilanswer
 

Si tu trouves un VB6 en etat de marche le lien que je t'ai donné plus haut te permettra de faire tout cela sans aucun probleme

n°1372796
darki666
Posté le 23-05-2006 à 08:58:09  profilanswer
 

OK je m'occupe de sa merci pour ton aide tu me sauve la vie :lol:

n°1373997
kiki29
Posté le 24-05-2006 à 12:18:13  profilanswer
 

Un bout de code qui marche ,si SQL Server la connexion sera à adapter


Option Explicit
 
'Outils | Reference MS Active Data Objects x.x Library
 
 
Sub ImportDonnées()
Dim Connexion As New ADODB.Connection
Dim Rs As New ADODB.Recordset
Dim CheminBase As String
Dim CompteChamps As Long
Dim Requete As String
Dim i As Integer
Dim NomTable As String
     
    CheminBase = ThisWorkbook.Path & "\" & "CPASAN.mdb"
    NomTable = "cpasan"
     
    Cells(1, 1).CurrentRegion.Clear
     
    Connexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & CheminBase & ";"
     
    Requete = "SELECT [NOM],[PRENOM],[UNITE]" _
            & " FROM " & NomTable & "" _
            & " WHERE ([PRESENT]= -1) AND" _
            & " ([DISPONIBLE] = 0) " _
            & " ORDER BY [UNITE] ASC, [NOM] DESC;"
     
    With Rs
        .CursorLocation = adUseClient
        .Open Requete, Connexion, adOpenDynamic, adLockOptimistic
    End With
     
    CompteChamps = Rs.Fields.Count
    For i = 0 To CompteChamps - 1
        Cells(1, i + 1).Value = Rs.Fields(i).Name
    Next
     
    Cells(2, 1).CopyFromRecordset Rs
     
    Set Rs = Nothing
    Set Connexion = Nothing
End Sub


Message édité par kiki29 le 03-06-2006 à 21:52:44
mood
Publicité
Posté le 24-05-2006 à 12:18:13  profilanswer
 

n°1374022
kiki29
Posté le 24-05-2006 à 12:41:44  profilanswer
 

un peu mieux


Option Explicit
 
'Cocher Outils References ActiveX Data Objects x.x Object Library.
 
Public Sub ADOImportTableAccess(FichierBaseAccess As String, NomTable As String, Cible As Range)
Dim Connexion As ADODB.Connection
Dim Rs As ADODB.Recordset
Dim i As Integer
Dim Requete As String
                 
    Set Connexion = New ADODB.Connection
    Connexion.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & FichierBaseAccess & ";"
     
    Set Rs = New ADODB.Recordset
     
    Requete = "SELECT NOM, PRENOM, AILE, CHAMBRE, UNITE FROM " & NomTable & " WHERE (PRESENT = -1) AND (DISPONIBLE = 0) ORDER BY UNITE ASC,NOM ASC"
 
    With Rs
        .CursorLocation = adUseClient
        .Open Requete, Connexion, adOpenDynamic, adLockOptimistic
 
        For i = 0 To Rs.Fields.Count - 1
            Cible.Offset(0, i).Value = Rs.Fields(i).Name
        Next
        Cible.Offset(1, 0).CopyFromRecordset Rs
    End With
     
    Rs.Close
    Set Rs = Nothing
     
    Connexion.Close
    Set Connexion = Nothing
End Sub
 
Sub Bouton1_QuandClic()
Dim Chemin As String
Dim NomTable As String
Dim Cible As Range
 
    Application.ScreenUpdating = False
        Cells.Clear
         
        Chemin = ThisWorkbook.Path & "\Cpasan.mdb"
        NomTable = "CPASAN"
        Set Cible = Cells(1, 1)
         
        ADOImportTableAccess Chemin, NomTable, Cible
         
        Cells.Select
        With Selection
            .HorizontalAlignment = xlGeneral
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
        End With
        Range("A1" ).Select
    Application.ScreenUpdating = True
End Sub


Message édité par kiki29 le 03-06-2006 à 21:53:22
n°1374145
kiki29
Posté le 24-05-2006 à 14:30:36  profilanswer
 

Pour les chaines de connexions voir http://www.carlprothman.net/Default.aspx?tabid=81

n°1374623
kiki29
Posté le 24-05-2006 à 21:46:30  profilanswer
 

Cette fois un INSERT brut de fonderie


Sub Excel2Access(FichierBaseAccess As String, NomTable As String)
Dim Connexion As ADODB.Connection
Dim ChaineConnexion As String
Dim Requete As String
Dim strNom, strPrenom, strNomJFille As String
Dim strLieuNaissance, strSexe As String
Dim strSituaFam, strDernierAdr As String
Dim strVille, strMedTraitant, strCaisse As String
Dim strComplement, strCategorie, strModSortie As String
Dim strService, strUnite As String
Dim strDiag, strAdresses As String
Dim strAile As String, iNbJours As Long, iNPP As Long
Dim iChambre As Integer, iCp As Long, iAgeAct As Integer
Dim dNumSecu As Double, iType As Integer
Dim iALD As Integer, iPresent As Integer, iDisponible As Integer
Dim strProvenance As String, DateNais As Date
Dim DateEntree As Date, DateSortiePre As Date, DateSortie As Date
     
    strNom = "Kiki"
    strPrenom = "essai"
    strNomJFille = ""
    DateNais = #7/15/1986#
    DateEntree = #9/9/9999#
    DateSortiePre = #10/9/9999#
    DateSortie = #11/9/9999#
    strLieuNaissance = "NoWhere"
    strSexe = "M"
    iAgeAct = 20
    strSituaFam = "C"
    strDernierAdr = "Somewhere"
    strVille = "Quimper"
    strMedTraitant = "Veto"
    strCaisse = "en bois"
    dNumSecu = 1234567890123#
    strComplement = ""
    strService = "OUDN"
    strUnite = "OUDN1"
    iCp = CLng(29000)
    strCategorie = ""
    iChambre = 512
    iType = 99
    iNbJours = CLng(DateDiff("d", DateEntree, DateSortie))
    iNPP = 99999
    strProvenance = "Hopital"
    strModSortie = "Taxi"
    strAile = "E"
    iALD = -1
    iPresent = -1
    iDisponible = 0
    strDiag = ""
    strAdresses = "10 rue des Morillons Paris"
     
    ChaineConnexion= "Provider=Microsoft.Jet.OLEDB.4.0;" & "Data Source=" & FichierBaseAccess & ";"
     
    Requete = "INSERT INTO " & NomTable & " (NOM,PRENOM,NOMJFILLE,DATE_NAIS,LIEU_NAIS,SEXE,AGE_ACT,SITUAFAM," & _
                                        "DERNIERADR,VILLE,CP,MEDTRAITAN,CAISSE,NUMERO,COMPLEMENT,ALD," & _
                                        "NPP,CATEGORIE,ENTREE,PROVENANCE,SORTIE_PRE,SORTIE,MOD_SORTIE,PRESENT," & _
                                        "SERVICE,AILE,CHAMBRE,TYPE,NB_JOURS,DISPONIBLE,ADRESSES,DIAG,UNITE)" & _
                                        "VALUES " & _
                                        "( '" & strNom & "','" & _
                                            strPrenom & "','" & _
                                            strNomJFille & "','" & DateNais & "','" & strLieuNaissance & "','" & _
                                            strSexe & "'," & iAgeAct & ",'" & strSituaFam & "','" & _
                                            strDernierAdr & "','" & strVille & "'," & iCp & ",'" & strMedTraitant & " ','" & _
                                            strCaisse & "'," & dNumSecu & ",'" & strComplement & "'," & iALD & "," & iNPP & ",'" & _
                                            strCategorie & "','" & DateEntree & "','" & strProvenance & "','" & DateSortiePre & "','" & DateSortie & "','" & strModSortie & "'," & iPresent & ",'" & _
                                            strService & "','" & strAile & "'," & _
                                            iChambre & "," & iType & "," & iNbJours & "," & iDisponible & ",'" & _
                                            strAdresses & "','" & strDiag & "','" & strUnite & "');"
    Set Connexion = New ADODB.Connection
    With Connexion
        .Open ChaineConnexion
        .CursorLocation = adUseClient
        .Execute (Requete)
    End With
     
    Connexion.Close
    Set Connexion = Nothing
End Sub


Message édité par kiki29 le 03-06-2006 à 21:51:58
n°1376443
darki666
Posté le 29-05-2006 à 09:42:51  profilanswer
 

merci bcp
 
cependant j'ai un pitit pb au niveau du Set Connexion = New ADODB.Connection  
il ne le reconnait pas comme un type et c'est a chque fois ça qui plante
donc si tu as une idée elle est la bienvenu
 
je pense que c'est pasque mon excel est un peu vieu
 
voila merci et @+

n°1376619
kiki29
Posté le 29-05-2006 à 13:00:20  profilanswer
 

lire dans l'entete ; 'Outils | Reference MS Active Data Objects x.x Library
Ma version : Office 10 SP 3 (2002)


Message édité par kiki29 le 29-05-2006 à 13:01:45
n°1377992
darki666
Posté le 31-05-2006 à 11:16:12  profilanswer
 

recoucou jé encors besoin d'aide (et oui encor et toujour)
voila j'ai f'ai une requete (et oui jé réussi!!!!) et je voudrai afficher le champ "PLAN1_CENTRE" dans les cellules de la ligne 5pour l'instant voila ma boucle
 
 i = 3
 
While Not rst.EOF
Cells(5, i).Value = rst.Fields("PLAN1_CENTRE" ).Value
 
rst.MoveNext
i = i + 1
Wend
 
et rien ne s'affiche donc sa fait 2h ke je pinaille la dessus et si jatten une 3eme heure fodra ke je rachete un ecran ossi!!!!!!!! mdr
@+

n°1378061
kiki29
Posté le 31-05-2006 à 12:57:19  profilanswer
 

Curieux parce qu'en modifiant le post du 24-05-2006 à 12:41:44
j'y arrive en rajoutant un rst.MoveFirst


 i = 3  
 rst.MoveFirst  <==
 While Not rst.EOF  
     Cells(5, i).Value = rst.Fields("PLAN1_CENTRE" ).Value  
     rst.MoveNext  
     i = i + 1  
Wend


Message édité par kiki29 le 03-06-2006 à 21:55:40
n°1378105
darki666
Posté le 31-05-2006 à 14:02:52  profilanswer
 

sa ne marche tjr po!!!snif  
jé un message d'erreur qui s'affiche : "BOF ouEOF est egale a true ou l'enregistrement actuel a ete suprimer.
l'operation demandér néscessite un enregstrement actuel.
 
voila poutant ma Base de donnée est bien je sais vraiment po ski bug sa me deprimme!!!lol
@+

n°1379450
kiki29
Posté le 02-06-2006 à 07:45:49  profilanswer
 

Je t'ai fourni un code clair et lisible ce qui n'est plus le cas de ton code
et pour moi cela est rédhibitoire, de plus l'usage du GaBoZoMeu ne doit pas avoir cours sur les forums


Message édité par kiki29 le 03-06-2006 à 07:47:14
n°1379467
darki666
Posté le 02-06-2006 à 09:06:56  profilanswer
 

Je trouve pas que le code qui m'est été fourni soit du niveau d'un debutant en vb et de plus je ne sais même pas ce qu'est le GaBoZoMeu
voila c'est tout  
tcho

n°1379485
kiki29
Posté le 02-06-2006 à 09:27:00  profilanswer
 

Eh bien laisse tomber la programmation
Le GaBoZoMeu c'est le langage des shadocks du sms

n°1383439
darki666
Posté le 08-06-2006 à 09:34:35  profilanswer
 

C'est pas ce que je voulais dire en fait je te demander quelque chose qui tenais sur 5 lignes et tu m'a donné un script de 40 lignes!lol
 
C'est bon je trouver le probleme c'été a l'interieur de ma requête
 
voila merci et je vais eviter le gabozomeu
 
@+

n°1388203
darki666
Posté le 15-06-2006 à 14:46:29  profilanswer
 

rebonjours c'est encors moi
pardonner moi d'abuser de votre gentillesse mais j'ai ecors un petit probleme ...
 
j'ai une requete qui marche sous sql view mais pas sur mon macro excel et donc je suis a bout de nerf! lol
pourriez vous me dire ce qui cloche?
 
voila ma requete :  
 
SELECT ECRITURE_COMPTE, SUM(ECRITURE_ANALYTIQUE_DEBIT)
- SUM(ECRITURE_ANALYTIQUE_CREDIT)) AS SOLDE_CREDITEUR,  
SUM(ECRITURE_ANALYTIQUE_CREDIT)- SUM(ECRITURE_ANALYTIQUE_DEBIT) AS SOLDE_DEBITEUR  
FROM TABLEAUEXCEL  
WHERE PIECE_DATE = '2005'  
AND DATEPART(mm, PIECE_DATE) = '01'  
AND ECRITURE_COMPTE BETWEEN '60000000' AND '79999999'  
AND FLUX_CODE = 'A010'  
AND CONVERT (VARCHAR, PLAN1_CENTRE) = '001'  
GROUP BY ECRITURE_COMPTE  
ORDER BY ECRITURE_COMPTE
 
merci de votre gentillesse
@+

mood
Publicité
Posté le   profilanswer
 


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

  les requêtes en Visual Basic

 

Sujets relatifs
Generation d'un fichier cab sous Visual Studio 2005Requetes Sql Simples !
[XQuery] Poser des requêtes sur un document XMLRequêtes mysqli paramétrées
Aide: correction BasicFaire plusieurs requetes SQL dans un dataSet
Visual C++ .NET 2003 & BDDClass PHP5 de gestion de requetes SQL simples
Visual studio Express pour des applications pour Windows MobileAnkhSVN + Visual Studio 2003
Plus de sujets relatifs à : les requêtes en Visual Basic


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