svamp Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 Jeg får ikke til å lagre (formatert) tekst i en tekstfil. Det jeg trenger er en måte å lagre lister jeg har laget med Print, som formatert tekst i en tekstfil. Her er print-koden: Private Sub LagListe() Dim intTeller As Integer Dim strSpacer As String Dim strLinje As String strSpacer = Chr(10) & Chr(10) & Chr(10) strLinje = "--------------------------------------------------------------------------" NavForste frmListe.Show frmListe.Print strSpacer frmListe.Print Tab(30); "DBFelt1"; Tab(40); "DBFelt2"; Tab(60); "DBFelt3"; Chr(10); Tab(30); strLinje For intTeller = 1 To Val(lblAntallPoster.Caption) If rsData.Recordset.BOF Then frmListe.Print Tab(30); txtFelt1.Text; Tab(40); txtFelt2.Text; Tab(60); txtFelt3.Text rsData.Recordset.AbsolutePosition = rsData.Recordset.AbsolutePosition + 1 End If frmListe.Print Tab(30); Felt1.Text; Tab(40); Felt2.Text; Tab(60); Felt3.Text rsData.Recordset.AbsolutePosition = rsData.Recordset.AbsolutePosition + 1 Next End Sub Den printer teksten til en hvit form. NavForste er en prosedyre som går til første post i databasen. DBFelt er "overskrifter" på lista txtFelt er tekstfeltene som viser innholdet i databasen. lblantallposter er en label som viser antallet poster i databasen. Grunnen til at jeg vil ha dette lagret i en tekstfil er at jeg ikke har fått til at det blir skrevet ut på skriveren, men det går jo an å åpne en tekstfil i notepad og skrive den ut. Flott hvis noen kan hjelpe meg med dette.. PS. Hvis noen har en bedre måte å formatere tekst på/lagre den med enn Print, er det bare å komme med det, jeg er på ingen måte bundet til å bruke print, alle tips mottas med takk.. Lenke til kommentar
aadnk Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 Å lagre filer med VB er ekstremt enkelt og er beskrevet i VB-guiden min. Du bruker Print syntaksen slik du gjør med en form, men du må sette inn filnummeret. Koden blir vel noe slik som dette: Private Sub LagreListe(sFilNavn As String) Dim intTeller As Integer Dim strSpacer As String Dim strLinje As String Open sFilNavn For Output As #1 strSpacer = Chr(10) & Chr(10) & Chr(10) strLinje = "--------------------------------------------------------------------------" NavForste frmListe.Show Print #1, strSpacer Print #1, Tab(30); "DBFelt1"; Tab(40); "DBFelt2"; Tab(60); "DBFelt3"; Chr(10); Tab(30); strLinje For intTeller = 1 To Val(lblAntallPoster.Caption) If rsData.Recordset.BOF Then Print #1, Tab(30); txtFelt1.Text; Tab(40); txtFelt2.Text; Tab(60); txtFelt3.Text rsData.Recordset.AbsolutePosition = rsData.Recordset.AbsolutePosition + 1 End If Print #1, Tab(30); Felt1.Text; Tab(40); Felt2.Text; Tab(60); Felt3.Text rsData.Recordset.AbsolutePosition = rsData.Recordset.AbsolutePosition + 1 Next Close #1 End Sub Lenke til kommentar
svamp Skrevet 8. mars 2004 Forfatter Del Skrevet 8. mars 2004 (endret) Takk for svar. Vet du hvordan jeg kan få til å lagre teksten i en ny tekstfil for hver gang jeg trykker på knappen, og at den åpner seg? Edit: Jeg tror ikke det virker...? Når jeg har trykt på knappen for å lagre liste, og deretter åpner tekstfilen i notepad, er den tom... Endret 8. mars 2004 av svamp Lenke til kommentar
aadnk Skrevet 8. mars 2004 Del Skrevet 8. mars 2004 Hmm... jeg vet ikke hvorfor filen er tom da det fungerte når jeg testet koden. Uten å se hele koden kan jeg ikke si noe mer. Men jeg vet i alle fall svaret på de første spørsmålene: For å åpne en fil med et dedikert program (slik som utforsker) bruker du ShellExecute API-kallen: 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 Public Sub ÅpneFil(sFilNavn As String) ShellExecute Me.hwnd, vbNullString, sFilNavn, vbNullString, "C:\", 1 End Sub Når du hele tiden skal lagre enn ny fil kan du bruke SaveSetting og GetSetting for å holde orden på hvor mangen filer du har lagret: Dim Tmp& Tmp = GetSetting("Ditt-program-navn-her", "FileSaving", "LastFile", 1) LagreListe App.Path & "\Data" & Tmp & ".txt" SaveSetting "Ditt-program-navn-her", "FileSaving", "LastFile", Tmp + 1 Lenke til kommentar
svamp Skrevet 9. mars 2004 Forfatter Del Skrevet 9. mars 2004 Vel, filen var ikke tom akkurat, hvis jeg for eksempel bruker loadfile på en richtextbox, får jeg fram det jeg har lagra før, men i utforsker vises filen med en filstørrelse på 0 byte, og den ser tom ut i Notepad (ingen tegn eller mellomrom eller i det hele tatt..) 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å