Avatar billede 2dbornot2db Nybegynder
05. april 2005 - 18:56 Der er 13 kommentarer og
1 løsning

Felttype for recordset

Jeg er ved at lave en funktion der eksporterer til Excel ved at åbne et DAO.recordset og kopiere dette ind i et nyt excelark.
Mine brugere skal imidlertid kunne arbejde videre med data herfra og det er derfor nødvendigt, at f.eks. datoer har formatet datoer.
Spørgsmålet lyder derfor om det er muligt at identificere felttypen for hvert felt i et recordset?
Min kode er til orientering:

Public Sub CreateExcel(strSheetName As String, ByVal strRS As String)

Dim RS As DAO.Recordset
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet
Dim xlChart As Excel.Chart
Dim i As Integer

Set xlApp = New Excel.Application

Set xlBook = xlApp.Workbooks.Add

xlApp.DisplayAlerts = False
For i = xlBook.Worksheets.Count To 2 Step -1
    xlBook.Worksheets(i).Delete
Next i
xlApp.DisplayAlerts = True

Set xlSheet = xlBook.ActiveSheet

strSheetName = Left(strSheetName, 30)
xlSheet.Name = strSheetName

Set RS = CurrentDb.OpenRecordset(strRS, dbOpenSnapshot)

xlSheet.Range("A2").CopyFromRecordset RS

For i = 0 To RS.Fields.Count - 1

    With xlSheet
        With .Cells(1, i + 1)
                .Value = RS.Fields(i).Name
                .Font.Bold = True
               
        End With
'Her kommer det sted hvor jeg ønsker at formattere kolonnen alt afhængig af felttype i RS
        .Columns(i + 1).AutoFit
    End With
Next i

Set RS = Nothing
xlApp.Visible = True
End Sub
Avatar billede mugs Novice
05. april 2005 - 19:11 #1
Uddrag af den kode jeg benytter. Str$ betyder at der overføres numeriske værdier. Hvis du vil formattere som tekst skal str$ erstattes med Format. Når jeg efter eksporten kontrollerer formatet i Ezxcel er det en dato. Jeg kan sende dig  hele filen hvis du ønsker, blot læg din e-mail.

wkb.Worksheets("Ark1").Cells(i, 3).Value = Str$(Rst.Fields![dato])
Avatar billede 2dbornot2db Nybegynder
05. april 2005 - 19:15 #2
Lyder godt!
NOSPAMnikolaj@anderledes.dkNOSPAM
Avatar billede mugs Novice
05. april 2005 - 19:20 #3
Sendt
Avatar billede nih Novice
05. april 2005 - 19:42 #4
du kan tjekke om en variabel er en dato vha funktionen isdate - eks:

Sub test()
    Dim d
    d = #2/10/2005#
    d = 12.25
    If IsDate(d) Then
        MsgBox Format(d, "yyyy mmmm dddd")
    ElseIf IsNumeric(d) Then
        MsgBox Format(d, "#,##0.##")
    End If
End Sub

Niels
Avatar billede 2dbornot2db Nybegynder
05. april 2005 - 19:44 #5
Tak for tilsendte. Jeg (tror) imidlertid ikke at jeg kan bruge det.
Din løsning forudsætter viden om hver kolonnes felttype (f.eks. om det er tekst, tal eller dato) og det er netop det spørgsmålet går på: Kan man identificere felttypen i et recordset?
- Eller har jeg misforstået dig?
Avatar billede mugs Novice
05. april 2005 - 19:49 #6
Hvad med nih's kommentar?
Når du har skruet en db sammen, må du vel vide hvilken felttype der er tale om. det skifter jo ikke bare efter forgodtbefindende. Et datofelt vil altid være et datofelt, et numerisk felt kan aldrig indeholde tekst o.s.v. På den måde kan du skrue eksportkoden sammen, så den altid vil eksportere datoer som datoer og tekst som tekst.
Avatar billede 2dbornot2db Nybegynder
05. april 2005 - 19:53 #7
nih -> tak, men jeg har brug for at kende felttypen. Der kan f.eks. godt stå tal i et tekstfelt etc.

mugs -> Ja, men det RS der åbnes kan variere (jf. koden). Rutinen skal med andre ord forberedes på at feltnavne, felttyper og feltrækkefølge skifter
Avatar billede nih Novice
05. april 2005 - 19:55 #8
forudsat der er en værdi i første post:

if isdate(rs.fields(i).value) then
  'Formater din kollone her til dato
end if

Niels
Avatar billede mugs Novice
05. april 2005 - 19:56 #9
Ja - når RS er variabel duer min kode ikke.
Avatar billede nih Novice
05. april 2005 - 20:02 #10
Hvad med denne:
If rs.Fields(i).Type = dbDate Then
    MsgBox "jeg er et dato felt"
End If
Avatar billede nih Novice
05. april 2005 - 20:36 #11
Hvad siger du 2dbornot2db ????????
Avatar billede 2dbornot2db Nybegynder
05. april 2005 - 21:36 #12
Beklager, men uden mad og drikke... :-)
nih -> Den sad lige i øjet!! Hvorfor f#@##% er det ikke altid at man kan se alle muligheder for et objekt ('Type' fremgår f.eks. ikke hos)?!

Smid et svar.

Mugs -> Som altid, tak for indsatsen :-)
Avatar billede mugs Novice
05. april 2005 - 21:40 #13
Selv tak :o)
Avatar billede nih Novice
05. april 2005 - 22:10 #14
Svar :)
Avatar billede Ny bruger Nybegynder

Din løsning...

Tilladte BB-code-tags: [b]fed[/b] [i]kursiv[/i] [u]understreget[/u] Web- og emailadresser omdannes automatisk til links. Der sættes "nofollow" på alle links.

Loading billede Opret Preview
Kategori
Dyk ned i databasernes verden på et af vores praksisnære Access-kurser

Log ind eller opret profil

Hov!

For at kunne deltage på Computerworld Eksperten skal du være logget ind.

Det er heldigvis nemt at oprette en bruger: Det tager to minutter og du kan vælge at bruge enten e-mail, Facebook eller Google som login.

Du kan også logge ind via nedenstående tjenester

IT-JOB

Styrelsen for Grøn Arealomlægning og Vandmiljø

Teamleder til Application Management

AL Sydbank A/S (tidligere Arbejdernes Landsbank)

Afdelingschef til GDPR & Tech Regulation

Nextway Software A/S

Product Configuration Specialist

Netcompany A/S

IT Consultant