cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 févr. 2006 à 20:46
Salut
Question courte, manque de détails.
Dis nous :
- ton langage : VBA, VB6, VB.Net
- comment tu alimentes ta DataGrid (à la main par requète et dépouillement ou avec un composant ADODC
Ne nous dis pas :
- que c'est urgent, ça ne sert à rien, ça aurait même tendance à énerver
Quand c'est urgent, commence par poser des questions précises, tu gagneras du temps et nous aussi
Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage. (Socrate)
jvuillaume
Messages postés8Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention20 février 2006 19 févr. 2006 à 21:23
J'utilise vb6
Ma datagrid viens de requête sql à partir de table access. ce qui veux dire que dans une même datagrid, je peux avoir différentes sources. Code si-dessous.
J'espère que cela sera suffisant.
La requête se fait automatiquement dans la sub mepsql
Option Explicit
'dans le tag du form mettre le nom EXACT de la table + un .'
Option Compare Text
Dim LocSqlSelectTout As String
Dim LocSqlSelect(11)
Dim LocsqlWhere As String
Dim LocSqlWhere1 As String
Dim LocsqlAnd1 As String
Dim LocsqlAnd2 As String
Dim locSqlFrom As String
Dim locSqlRetour As String
Private Sub ConnectAdo()
Dim Txt As String
Dim R1 As ADODB.Recordset
Dim AdoBase As ADODB.Connection
Dim sql As String
Txt = "dbq=" & BaseRol.Name & ";"
Txt = Txt & "defaultdir=" & App.Path & ";"
Txt = Txt & "Driver={Microsoft Access Driver (*.mdb)}"
'Txt = "DBQ=E:\StatEbp\EBP.MDB;DefaultDir=E:\StatEbp;Driver={Microsoft Access Driver (*.mdb)};DriverId=281;FIL=MS Access;FILEDSN=E:\StatEbp\Ebp.dsn;MaxBufferSize=2048;MaxScanRows=8;PageTimeout=5;SafeTransactions=0;Threads=3;UID=admin;UserCommitSync=Yes;"
Me.Ado1.ConnectionString = Txt
'SQL = "select * from detailbon"
'SQL = SQL & " where month(detailbon.[date])='3'"
'Me.Ado1.RecordSource = SQL
'Me.Ado1.Refresh
End Sub
Private Sub MepGrille()
Dim D As String
D = Format(Date, "dddd dd mmmm yyyy")
Dim C As Integer
For C = 0 To Me.Grille.Columns.Count - 1
Me.Grille.Col = C
Me.Grille.Row = 0
Select Case Me.Tag
Case "facture."
If Left(Me.Grille.Columns.Item(C).Caption, 4) = "date" Then
Me.Grille.Columns(C).Alignment = dbgRight
'mettre au format date ????????
End If
End Select
Next C
Me.Grille.Visible = True
End Sub
Private Sub Command1_Click() 'appelle la table Factures'
Call VideSelect
Me.Tag = "facture."
LocSqlSelect(0) = " *"
locSqlFrom = "from facture"
Call MepSql
End Sub
Private Sub Command2_Click() 'appelle la requete basée sur la table produits'
Call VideSelect
Me.Tag = "Produits."
Call SqlProduit
End Sub
Private Sub Command3_Click() 'appelle la requête basée sur la table detailbon'
Call VideSelect
Me.Tag = "detailbon."
LocSqlSelect(0) = " *"
locSqlFrom = "from detailbon"
Call MepSql
End Sub
Private Sub Form_Load()
Me.Grille.BackColor = Menu.BackColor
Me.WindowState = 2
Call ConnectAdo
Call Command2_Click
End Sub
Private Sub SqlProduit()
LocSqlSelect(0) = " produits.Marque,"
LocSqlSelect(1) = " produits.Référence,"
LocSqlSelect(2) = " produits.Pxeucatalogue as [Prix Catalogue],"
LocSqlSelect(3) = " produits.[pxeu/kg] as [Prix Kg],"
LocSqlSelect(4) = " produits.[pxeupaht] as [Prix d'achat HT],"
LocSqlSelect(5) = " PRODUITS.Tauxdecommissionpardéfaut as [Taux de commission]"
locSqlFrom = " from produits"
Call MepSql
End Sub
Private Sub MepSql()
Dim I As Integer
Me.Grille.Visible = False
locSqlRetour = ""
LocSqlSelectTout = "select "
For I = 0 To 9
LocSqlSelectTout = LocSqlSelectTout & LocSqlSelect(I)
Next I
LocsqlWhere = LocSqlWhere1
locSqlRetour = LocSqlSelectTout & locSqlFrom & LocsqlWhere
Me.essai = locSqlRetour
Me.Ado1.RecordSource = locSqlRetour
Me.Ado1.Refresh
Call MepGrille
End Sub
Private Sub grille_KeyDown(KeyCode As Integer, Shift As Integer)
Dim Nom As String
Dim C As Integer
Dim NomCol As String
If KeyCode = vbKeyF12 Then 'selectionne uniquement les données de la colonne cliquée'
Nom = Me.Grille.Text
NomCol = Me.Tag & Me.Grille.Columns.Item(Me.Grille.Col).Caption
LocSqlWhere1 = " where " & NomCol & "= '" & Nom & "'"'LocSqlWhere1 " where produits.marque '" & Nom & "'"
Call MepSql
End If
End Sub
Private Sub VideSelect()
Dim I As Integer
For I = 0 To 10
LocSqlSelect(I) = ""
Next I
locSqlFrom = ""
jvuillaume
Messages postés8Date d'inscriptionjeudi 29 janvier 2004StatutMembreDernière intervention20 février 2006 20 févr. 2006 à 09:35
Merci à toi gaa179.
Tu m'enlèves une épine du pied car les infos sur datagrid sont assez rares.
Comme quoi, après plus de 30 ans de programmation (j'ai commencé sur apple2c)
ont peut encore coincer.
Soyons Humbles!