Toon posts:

[VBA] Database veldnamen als kolom titels ?

Pagina: 1
Acties:
  • 183 views sinds 30-01-2008
  • Reageer

Verwijderd

Topicstarter
Hallo,

Ik heb nooit eerder in Microsoft Excel gewerkt, laat staan geprogrammeerd. Nu moet ik voor m'n werk iets ontwikkelen op grafiekjes te maken aan de hand van een log tabel op de database. Ik mocht geen Java of .Net gebruiken, maar enkel VBA.

Nu heb ik een verbinding gemaakt met een DB2 database, via een userform waar de gebruiker zijn login & pass moet ingeven. Daarna ga ik een sheet vullen met data uit die log tabel. Dat lukt perfect. Ik heb enkel een klein probleempje met de titels van die kolom. Hoe kan ik die automatisch op de eerste lijn van de juiste kolom zetten ?

Het stukje code ziet er als volgt uit:
code:
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
         Set ObjWorkSheet = ThisWorkbook.Worksheets("RAW")
         'Clear old results
         Range("A1", Columns.Count & ":" & Rows.Count).Clear
         AppendToLog ("Old data cleared")
         'Set up cell formatting
         Range("A1", "A" & Rows.Count).NumberFormat = "m/d/yyyy"
         Range("D1", "D" & Rows.Count).NumberFormat = "m/d/yyyy hh:mm:ss AM/PM"
         Range("E1", "E" & Rows.Count).NumberFormat = "m/d/yyyy hh:mm:ss AM/PM"
         'Open connection
         On Error GoTo error_login
         ObjConnect.Open (StrConnect)
         'Fetch data
         ObjRec.Open StrSql, ObjConnect
         On Error GoTo error_fetch
         Dim jInt As Integer
         jInt = 0
         For Each j In ObjRec.Fields
            ObjWorkSheet.Range("" & Chr(Asc(A) + jInt) & "1").Value = j.Name
            jInt = jInt + 1
         Next j
         While Not ObjRec.EOF
            i = i + 1
            ObjWorkSheet.[A2].Cells(i) = ObjRec!RUN_DATE
            ObjWorkSheet.[B2].Cells(i) = ObjRec!QueryName
            ObjWorkSheet.[C2].Cells(i) = ObjRec!Output_To
            ObjWorkSheet.[D2].Cells(i) = ObjRec!Start_Time
            ObjWorkSheet.[E2].Cells(i) = ObjRec!End_Time
            ObjWorkSheet.[F2].Cells(i) = ObjRec!RunSequence
            ObjWorkSheet.[G2].Cells(i) = ObjRec!Center
            ObjWorkSheet.[H2].Cells(i) = Abs(DateDiff("s", ObjRec!End_Time, ObjRec!Start_Time))
            ObjRec.MoveNext
         Wend
         AppendToLog ("Data retrieved")
         'Close connection
         ObjRec.Close: ObjConnect.Close

Het probleem stukje is dit:
code:
1
2
3
4
         For Each j In ObjRec.Fields
            ObjWorkSheet.Range("" & Chr(Asc(A) + jInt) & "1").Value = j.Name
            jInt = jInt + 1
         Next j
Hoe kan ik die celnaam dynamisch gaan aanmaken ?
Met Google Groups heb ik niet veel kunnen vinden. Allemaal het geval van rows

Alvast bedankt ^^

  • whoami
  • Registratie: December 2000
  • Laatst online: 22:54
VBA is Office specifiek; dus hoort het thuis in OFF, niet in p&w.
-> OFF

https://fgheysels.github.io/


  • Lustucru
  • Registratie: Januari 2004
  • Niet online

Lustucru

26 03 2016

Wat gaat er precies mis? Krijg je een foutmelding of kloppen de weergegeven namen niet, staan ze in de verkeerde kolom?
code:
1
   ObjWorkSheet.Range("" & Chr(Asc(A) + jInt) & "1").Value = j.Name
Is imho moeilijk doen om niks.
code:
1
   ObjWorksheet.cells(1,jInt).value=j.name

jInt>=1

De oever waar we niet zijn noemen wij de overkant / Die wordt dan deze kant zodra we daar zijn aangeland


Verwijderd

(niet getest)
code:
1
2
3
4
5
jInt=0
For Each j In ObjRec.Fields
  ObjWorkSheet.Range("A1").offset(0,jInt).Value = j.Name
  jInt = jInt + 1
Next j
overigens gaat de code voor het clearen en celformatteren ook niet werken, die rows.count gaat niet veel zinnigs opleveren.

[ Voor 3% gewijzigd door Verwijderd op 18-11-2005 10:50 ]


Verwijderd

Topicstarter
Er kwam niets tevoorschijn. Maar ik heb m'n fout gevonden ... uiteindelijk was het iets erg doms >.<
code:
1
ObjWorkSheet.Range("" & Chr(Asc("A") + jInt) & "1").Value = j.Name
Het probleem echter is dat als ik nu die user form sluit freezed Excel gewoon :s
Ik moet nog uitzoeken wat de oorzaak ervan is.