Gå til innhold

Anbefalte innlegg

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.. :D

Lenke til kommentar
Videoannonse
Annonse

Å 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

Takk for svar. :yes:

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... :ermm:

Endret av svamp
Lenke til kommentar

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

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

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 konto

Logg inn

Har du allerede en konto? Logg inn her.

Logg inn nå
  • Hvem er aktive   0 medlemmer

    • Ingen innloggede medlemmer aktive
×
×
  • Opprett ny...