Via VBA in Excel haal ik een recordset op middels ADODB.
Dit gaat allemaal prima op 1 ding na.
Er is 1 veld die hij ophaalt wat ervoor zorgt dat de rest van de kolommen na dat veld niet meer gevuld worden.
Voorbeeld kolommen:
Art.Nr - Art.Omschrijving - Leverancier - Oms.Art.Lev - Datum - Omzet - etc.
De query haalt alles op maar laat na de kolom "Oms.Art.Lev" niets meer zien in Excel.
Als ik uit de select query het veld verwijderen dan laat hij alles weer zien.
Als ik het veld uitlees met een loop en deze in MsgBox (.Fields(3)) gooi, dan zie ik hem gewoon wel.
Waarom wordt deze niet gekopieerd naar Excel? Ik ben lost.
De MsgBox geeft me dus de ald.AldOmsBijLeverancier uit de database maar in Excel wordt maar t/m kolom 6 gevuld. De rest is leeg.
Dit gaat allemaal prima op 1 ding na.
Er is 1 veld die hij ophaalt wat ervoor zorgt dat de rest van de kolommen na dat veld niet meer gevuld worden.
Voorbeeld kolommen:
Art.Nr - Art.Omschrijving - Leverancier - Oms.Art.Lev - Datum - Omzet - etc.
De query haalt alles op maar laat na de kolom "Oms.Art.Lev" niets meer zien in Excel.
Als ik uit de select query het veld verwijderen dan laat hij alles weer zien.
Als ik het veld uitlees met een loop en deze in MsgBox (.Fields(3)) gooi, dan zie ik hem gewoon wel.
Waarom wordt deze niet gekopieerd naar Excel? Ik ben lost.
Visual Basic:
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
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
| Sub ConnectionExample1() Dim objMyConn As ADODB.Connection Dim objMyCmd As ADODB.Command Dim objMyRecordset As ADODB.Recordset Dim strSQL As String Set objMyConn = New ADODB.Connection Set objMyCmd = New ADODB.Command Set objMyRecordset = New ADODB.Recordset ' Open a Connection using an ODBC DSN named "Pubs". objMyConn.Open "...", "...", "...." Set objMyCmd.ActiveConnection = objMyConn strSQL = "select a.ArtCode, a.ArtZoekcode, a.ArtOms, a.ArtOmsEenheid, c.VAdrNaam1, ald.AldArtCodeBijLeverancier" strSQL = strSQL & ", ald.AldOmsBijLeverancier, ald.AldInkoopeenheid, ald.AldInkoopprijs, ald.AldMinimumAfname" strSQL = strSQL & ", (select sum(omz.OmzAantal) from kingsystem.tabOmzet omz where omz.OmzArtGid = a.ArtGid and omz.OmzDatum >= '2009-01-01' and omz.OmzDatum <= '2009-12-31' group by omz.OmzArtGid)" strSQL = strSQL & ", (select sum(omz.OmzOmzetBasis) from kingsystem.tabOmzet omz where omz.OmzArtGid = a.ArtGid and omz.OmzDatum >= '2009-01-01' and omz.OmzDatum <= '2009-12-31' group by omz.OmzArtGid)" strSQL = strSQL & ", (select count(VrdMutAantal) from kingsystem.tabVoorraadMutatie tvm where tvm.VrdMutArtGid = a.ArtGid and tvm.VrdMutSoort = 1 and tvm.VrdMutDatum > '2009-01-01')" strSQL = strSQL & ", (select substr(og.OpbrGrpNummer,1,2) from kingsystem.tabOpbrengstGroep og where og.OpbrGrpGid = a.ArtOpbrGrpGid)" strSQL = strSQL & ", (select og.OpbrGrpOms from kingsystem.tabOpbrengstGroep og where og.OpbrGrpNummer = (select substr(og.OpbrGrpNummer,1,2) from kingsystem.tabOpbrengstGroep og where og.OpbrGrpGid = a.ArtOpbrGrpGid))" strSQL = strSQL & " from kingsystem.tabArtikel a" strSQL = strSQL & " left join kingsystem.tabArtikelLeverancier al" strSQL = strSQL & " on a.ArtGid = al.ArtLevGid" strSQL = strSQL & " left join kingsystem.vwKMBCredStam c" strSQL = strSQL & " on al.ArtLevNawGid = c.NawFilGid" strSQL = strSQL & " left join kingsystem.tabArtikelLeverancierDetail ald" strSQL = strSQL & " on al.ArtLevGid = ald.AldArtLevGid" strSQL = strSQL & " where a.ArtCode = '0,27'" strSQL = strSQL & " order by a.ArtCode" objMyCmd.CommandText = strSQL Set rs = objMyCmd.Execute With rs Do While Not .EOF MsgBox (.Fields(6)) .MoveNext Loop End With Set rs = Nothing 'Open Recordset Set objMyRecordset.Source = objMyCmd objMyRecordset.Open 'Copy Data to Excel ActiveSheet.Range("A4").CopyFromRecordset objMyRecordset ' Close the connection. objMyConn.Close End Sub |
De MsgBox geeft me dus de ald.AldOmsBijLeverancier uit de database maar in Excel wordt maar t/m kolom 6 gevuld. De rest is leeg.