Bonjour,
Je suis sous access97, et je code en VBA
Je voudrais savoir comment rajouter une colonne dans un recordset.
Sachant que les résultats sont calculés à partir des autres colonnes du recordset.
Merci
Bonjour,
Je suis sous access97, et je code en VBA
Je voudrais savoir comment rajouter une colonne dans un recordset.
Sachant que les résultats sont calculés à partir des autres colonnes du recordset.
Merci
Salut,
Tu veux ajouter un champ à un recordset, mais ce recordset est-il basé sur une table ou une requete ?
Donnes nous plus de détail SPT (ton code actuel par exemple).
A+
a mon avis tu peux utilliser alter table
Voici mon code,
le recordset provient d'une requete dont voici le code
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41 Private Sub Commande3_Click() On Error GoTo Err_Commande3_Click Dim appexcel As Excel.Application Dim wbexcel As Excel.Workbook Set appexcel = CreateObject("Excel.Application") appexcel.Visible = True Set wbexcel = appexcel.Workbooks.Open("H:\temp2.xls") appexcel.Sheets("Feuil1").Select Dim boucle1 As Integer Dim Rs As DAO.Recordset Dim DatelockUp As Date Set Rs = CurrentDb.OpenRecordset("Composition") boucle1 = 0 While Not Rs.EOF appexcel.cells(2, 1) = Rs(10) appexcel.cells(6 + boucle1, 1) = Rs(9) appexcel.cells(6 + boucle1, 2) = Rs(2) appexcel.cells(6 + boucle1, 3) = Rs(3) appexcel.cells(6 + boucle1, 4) = Rs(4) appexcel.cells(6 + boucle1, 5) = Rs(5) appexcel.cells(6 + boucle1, 6) = Rs(6) appexcel.cells(6 + boucle1, 7) = Rs(7) appexcel.cells(6 + boucle1, 8) = Rs(8) boucle1 = boucle1 + 1 Rs.MoveNext Wend Set Rs = Nothing Exit_Commande3_Click: Exit Sub Err_Commande3_Click: MsgBox Err.Description Resume Exit_Commande3_Click End Sub
Re,
Je vois pas où est le besoin de créer un champ ...
A+
je dois créer une colonne dont les résulats dépendent des autres colonnes
par exemple colonnecréee=rs(0)+rs(1)
je sais pas comment créer une nouvelle colonne et la remplir
j'ai essayé avec ce code
mais j'ai l'erreur suivante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 With Rs .Edit !DatelockUp = Rs(3) + Rs(6) .Update End With
impossible de mettre à jour. La base de données est en lecture seule ou l'object est en lecture seule.
tu mélanges tout
tu ne peux pas créer une colonne supplémentaire dans ton recordset
ton recordset se base (apparemment) sur une table.
Dans ce cas, ajoute une colonne à ta table, et ensuite dans l'usage du recordsettu auras cette colonne.
mais bon, je comprends toujours pas ce que tu cherches
Je vais essayer d'etre clair mais c'est pas facile d'expliquer.
Je dois a partir d'une requete contenant plusieurs champs je dois créer une colonne dont le résultat dépend des autres colonnes.
Par exemple : requete composition
Name date redemption notice frequency
aig 12/12/03 60 30 d
ing 01/12/03 30 60 w
aig 01/01/04 60 30 d
donc en sql ca pourrait donner :
select date+redemption+ notice as datefinale
from composition
le soucis c'est que normalement les résultats dépendent de plusieurs conditions :
et donc je voudrais créer une nouvelle colonne au recordset dont les résulats peuvent dependrent de conditions
if(frequency=d)
rs(datefinale)=....
et ainsi de suite
Re,
Et pourquoi ne pas juste ajouter une formule dans une colonne d'excel ?
A+
Merci mais malheuresement
Je dois tout coder sous access
sinon je vais essayer sans passer par un recordset mais en créant une requete en VBA et rajouter une colonne contenant les résultats des calculs
Mais tu peux bien, depuis Access, entrer une formule (avec tes test et ton calcul) dans la première cellule et , toujours depuis Access, faire un "copier vers le bas" ?
A+
oui mais pas avec des if, des modulos et des lastmonth (formules venant d'excel)
Salutations,
Ben si tu peux depuis Access donner des formules qui conteinnent des fonction d'Excel à tes cellules :
Avec une table composition qui conteint :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47 Sub DvpPtCom() On Error GoTo Err_Commande3_Click Dim Appexcel As Object Dim Wbexcel As Object Set Appexcel = CreateObject("Excel.Application") Appexcel.Visible = True Set Wbexcel = Appexcel.Workbooks.Open("c:\test.xls") Appexcel.Sheets("Feuil1").Select Dim boucle1 As Integer Dim Rs As DAO.Recordset Dim DatelockUp As Date Set Rs = CurrentDb.OpenRecordset("Composition") boucle1 = 0 While Not Rs.EOF Appexcel.cells(6 + boucle1, 1) = Rs(0) Appexcel.cells(6 + boucle1, 2) = Rs(1) Appexcel.cells(6 + boucle1, 3) = Rs(2) Appexcel.cells(6 + boucle1, 4) = Rs(3) Appexcel.cells(6 + boucle1, 5) = Rs(4) boucle1 = boucle1 + 1 Rs.MoveNext Wend Appexcel.Columns("B:B").NumberFormat = "dd/mm/yy;@" Appexcel.Range("F6").FormulaR1C1 = "=IF(RC[-1]=""D"",RC[-4],NOW())" Appexcel.Range("G6").FormulaR1C1 = "=MOD(RC[-4],20)" Appexcel.Columns("F:F").NumberFormat = "dd/mm/yy;@" Appexcel.Range("F6:G8").FillDown Exit_Commande3_Click: Set Appexcel = Nothing Set Wbexcel = Nothing Set Rs = Nothing Exit Sub Err_Commande3_Click: MsgBox Err.Description Resume Exit_Commande3_Click End Sub
Name date redemption notice frequency
aig 12/12/03 60 30 d
ing 01/12/03 30 60 w
aig 01/01/04 60 30 d
A+
Vais essayer ton code
merci, je vous tiens au courant
Ton code fonctionne, encore merci.
Le hic c'est que je dois aussi utiliser une fonction qui s'appelle fin.mois et vba ne comprend pas cette fonction.
Il faut activer l'utilitaire d'analyse dans macros complémentaires pour avoir accès à cette focntion.
Merci
mais que VBA connaisse ou pas la fonction n'est pas un problème puisse que c'est une chaine que tu affecte :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 Appexcel.Range("G6").FormulaR1C1 = "=FIN.MOIS(RC[-3])"
Vous avez un bloqueur de publicités installé.
Le Club Developpez.com n'affiche que des publicités IT, discrètes et non intrusives.
Afin que nous puissions continuer à vous fournir gratuitement du contenu de qualité, merci de nous soutenir en désactivant votre bloqueur de publicités sur Developpez.com.
Partager