[space] Skrevet 1. februar 2005 Del Skrevet 1. februar 2005 Kan noen peke meg til en side, bok eller lignengde som forklarer hvordan jeg kan generere en html side fra vb6? Jeg tenkte å bruke en htmlside i steden for rapporten som rapportgeneratoren lager, da denne er alt for lite konfigurerbar. Jeg vil lage en matrise med datautplukk fra accessdatabasen til vb-aplikasjonen min. dager bortover og måltider nedover. Så hvis det ligger "jogge" på mandag kl 10 i basen skal det komme på plass 1,1 osv... Noe slikt: mandag tirsdag onsdag ... kl 10 kl 11 ... Hørt noe om at man kan lage labels i en htmlfil og fylle ut disse med data fra vb, men har ikke funnet noen god side som forklarer nærmere. [space] Lenke til kommentar
aadnk Skrevet 1. februar 2005 Del Skrevet 1. februar 2005 Dersom du kan (X)HTML, burde det ikke være så altfor vanskelig å skrive en HTML-generator. En HTML-side er som kjent bygd opp av såkalte tagger - noe som lett kan skrives til en fil. Tar vi utgangspunkt i oppgaven du beskriver, ville det være mest hensiktsmessig å skrive all data til en tabell. Dette kan du eksempelvis gjøre på følgende måte: Public Sub GenerateHTML(sOutput As String, sCaption As String, aData As Recordset) Dim x As Field, Free As Long ' Ledig fil Free = FreeFile Open sOutput For Output As #Free ' Les fra de første linjene aData.MoveFirst ' Skriv de første linjene i HTML-filen Print #Free, "<!DOCTYPE HTML PUBLIC ""-//W3C//DTD HTML 4.01 Transitional//EN"">" Print #Free, "<html>" & vbCrLf & "<head>" & vbCrLf & " <title>" & sCaption & "</title>" & vbCrLf & _ "<head>" & vbCrLf & vbCrLf & "<body>" & vbCrLf ' Sett inn en tabell Print #Free, "<table border=""1"">" & vbCrLf & "<tr>" ' Først skal kolonnenavnene innskrives For Each x In aData.Fields Print #Free, "<td>" & IIf(Len(x.Name) = 0, " ", x.Name) & "</td>" Next ' Avslutt denne rekken Print #Free, "</tr>" ' Gå igjennom alle rekkene Do Until aData.EOF ' Start en ny rekke i tabellen Print #Free, "<tr>" & vbCrLf For Each x In aData.Fields If IsNull(x.Value) Then Print #Free, "<td> </td>" Else Print #Free, "<td>" & x.Value & "</td>" End If Next ' Avslutt denne rekken Print #Free, "</tr>" aData.MoveNext Loop ' Avslutt tabellen og HTML-filen Print #Free, "</table>" & vbCrLf & "</body>" & vbCrLf & "</html>" End Sub Denne prosedyren kan brukes slik: Dim Database As Database, Record As Recordset Set Database = OpenDatabase("C:\db1.mdb") Set Record = Database.OpenRecordset("Ukeaktiviteter") GenerateHTML "C:\Test.html", "Dette er en test", Record Lenke til kommentar
[space] Skrevet 2. februar 2005 Forfatter Del Skrevet 2. februar 2005 Flotte saker! Da har jeg litt å bygge videre på. Det er selvfølgelig ikke noe i veien for å flytte uttrekkene fra basen ned i selve GenerateHTML funsjonen? Skal ha ut et par tre tabeller med forskjellige uttrekk på den siden. [space] Lenke til kommentar
aadnk Skrevet 2. februar 2005 Del Skrevet 2. februar 2005 Neida, tviler på at du vil møte på noen problemer der. Ellers kan du jo endog flytte den delen av funksjonen som skriver tabellen til en egen prosedyre, slik at du lettere kan generere flere tabeller på samme HTML-side. Lenke til kommentar
[space] Skrevet 5. februar 2005 Forfatter Del Skrevet 5. februar 2005 Hvordan kan jeg få denne rapporten til å åpne seg i default browser, når jeg trykker på f.eks. "se rapport" ? [space] Lenke til kommentar
aadnk Skrevet 5. februar 2005 Del Skrevet 5. februar 2005 Bruk API-kallet ShellExecute for å åpne en fil i dens forhåndsbestemte applikasjon: Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long Const SW_SHOWNORMAL = 1 Private Sub cmdShowReport() ShellExecute Me.hwnd, vbNullString, "C:\Test.html", vbNullString, "C:\", SW_SHOWNORMAL End Sub Lenke til kommentar
[space] Skrevet 8. februar 2005 Forfatter Del Skrevet 8. februar 2005 Skal testes senere i dag! Er denne dll'en en standard windows dll, eller er det noe jeg må passe på å få med når jeg skal lage installasjonsprogram senere? støttes i 98 -> XP ? [space] Lenke til kommentar
aadnk Skrevet 8. februar 2005 Del Skrevet 8. februar 2005 ' date='08/02/2005 : 15:59'] støttes i 98 -> XP ? [space] Såfremt operativsystemet støtter HTML-filer og kan dermed åpne den, tror jeg neppe dette vil by på problemer. ShellExecute-funksjonen krever minst Windows NT 3.1 eller senere - Windows 95 og senere støttes også. Lenke til kommentar
[space] Skrevet 12. februar 2005 Forfatter Del Skrevet 12. februar 2005 ShellExecute Me.hwnd, vbNullString, "C:\Test.html", vbNullString, "C:\", SW_SHOWNORMAL Hvordan får jeg dette til å virke med relativ path? I forhold til exe fila ligger htmlfila under rapport\test.html Testa ShellExecute Me.hwnd, vbNullString, "rapport\Test.html", vbNullString, "C:\", SW_SHOWNORMAL og ShellExecute Me.hwnd, vbNullString, "rapport\Test.html", vbNullString, "rapport\", SW_SHOWNORMAL men det funka dårlig. Noen variabel som gir installpath? [space] Lenke til kommentar
aadnk Skrevet 12. februar 2005 Del Skrevet 12. februar 2005 (endret) Du kan benytte variabelen App.Path for å erverve programmets lokalisasjon: ShellExecute Me.hwnd, vbNullString, App.Path & IIF(Right(App.Path, 1) = "\", "", "\") & "rapport\test.html", vbNullString, "C:\", SW_SHOWNORMAL Koden etter App.Path legger ganske enkelt til karakteren "\" dersom dette er nødvendig. Er stien til EXE-filen C:\Programmer\DittProgram, vil den legge til karakteren; dette skjer derimot ikke dersom stien er C:\. Endret 12. februar 2005 av aadnk Lenke til kommentar
[space] Skrevet 12. februar 2005 Forfatter Del Skrevet 12. februar 2005 Fantastisk! Takker så mye. En liten guru du gitt... Lenke til kommentar
Anbefalte innlegg
Opprett en konto eller logg inn for å kommentere
Du må være et medlem for å kunne skrive en kommentar
Opprett konto
Det er enkelt å melde seg inn for å starte en ny konto!
Start en kontoLogg inn
Har du allerede en konto? Logg inn her.
Logg inn nå