Avatar billede krimos Nybegynder
14. april 2001 - 01:48 Der er 30 kommentarer

Gem!!! HJÆLP!!! NEMT 50Point

jeg er ret ny til VB, så i syntes nok det er for nemt, jeg har lavet et lille program til at holde styr på kunder, men efter jeg har skrevet noget i programmet og derefter lukker det ned, og åbner det igen så er det ting som jeg har skrevet ind blevet væk, hvordan kan jeg gemme det så det er der når jeg åbner programmet igen?
Avatar billede parazite Nybegynder
14. april 2001 - 01:49 #1
Du skal huske at gemme både project og fil og hele skidtet. Mener der er to steder du skal trykke gem.
Avatar billede krimos Nybegynder
14. april 2001 - 01:57 #2
nej det er ikke det jeg mener. det er når jeg har lavet det hele. jeg sidder med programmet(som jeg har lavet) åbner det, skriver et eller andet, lukker programmet og åbner det igen, men så er det jeg har skrevet jo væk, jeg vil gerne vide hvordan jeg skal gemme det, altså noget med at lave en gem knap og få den til gemme det hele.
Avatar billede parazite Nybegynder
14. april 2001 - 01:58 #3
Aaaah... der er jeg stået af! :o)
Avatar billede krimos Nybegynder
14. april 2001 - 01:59 #4
kender du mon nogen som ved det, jeg sidder her og er  lige ved at falde om af træthed, men jeg skal sku vide det??
Avatar billede parazite Nybegynder
14. april 2001 - 02:05 #5
Ja, kender nogen, men ingen af dem er online lige nu. :o(
Avatar billede jette1 Nybegynder
14. april 2001 - 02:28 #6
Hvis jeg forstår dig korrekt, taster du oplysninger ind i nogle felter. Derefter lukker du programmet, og alle dine oplysninger er  forsvundet når du åbner det igen, ikk?

Hvis ikke du har prøvet at arbejdet med databaser, er det nemmeste nok at gemme oplysningerne i en teksfil (*.txt)

Hvis du har et tekstfelt der hedder text1 og en knap der hedder command1, kan du f.eks. gøre følgende:

Private Sub command1_Click()
  Dim minTekst As String
  minTekst = text1.Text

  Open \"c:\\gemTekst.txt\" for output as #1
  write, minTekst
  close #1
End Sub

Når du så skal hente informationen igen (f.eks. vha. en command2 knap) og indlæse det i tekst1 gør du følgende:

Private Sub command2_Click()
  Dim minTekst As String
  Open \"c:\\gemTekst.txt\" for input as #1
  input, minTekst
  close #1

  text1.text = minTekst
End Sub

Håber det var hvad du var ude efter..

Mvh. Jette
Avatar billede krimos Nybegynder
14. april 2001 - 10:30 #7
den kan ikke lide det komma du har ved write, mintekst og ved input, mintekst.
hvad skal jeg gøre??
Avatar billede kaffe Nybegynder
14. april 2001 - 11:05 #8
Prøv med

write #1, minTekst
input #1, minTekst

Du skal være opmærksom på, at når du bruger write kommer der \"gåseøjne\" om teksten, det gør der ikke med

print #1, minTekst

Noget andet er, at når du skriver

Open for filnavn Output as #1

vil den erstatte den tekst der er i filen. Skriver du i stedet

Open filnavn for Append as #1

vil den skrive teksten efter eksisterende tekst.

mvh
Torben


Avatar billede jette1 Nybegynder
14. april 2001 - 11:09 #9
krimos: Ups! det må du undskylde, sådan går det når det er ud på de små timer :-) .. men jeg kan se at kaffe har svaret...
Avatar billede razersedge Nybegynder
14. april 2001 - 12:59 #10
Jeg har også lige et spørgsmål om dette, hvad hvis man vil gøre det muligt selv at vælge hvad filen skal gemmes som (navn) og hvilken fil der skal åbnes, når programmet er lavet, sådan at man f.eks kan have 2 txt filer kørende eller flere også være istand til selv at vælge hvilken der skal åbnes i text1.
Avatar billede kaffe Nybegynder
14. april 2001 - 13:05 #11
Du sætter bare en variabel ind i stedet for \"c:\\gemTekst.txt\":

Private sub SkrivFil(strFilnavn as String)
  dim strTekst as String
  strTekst = Text1.Text
  open filnavn for output as #1
    print #1, strTekst
  close #1
End Sub

Sub Command1_Click()
  SkrivFil \"C:\\MinFil.txt\"
End Sub

mvh
kaffe
Avatar billede razersedge Nybegynder
14. april 2001 - 14:42 #12
okey... men hvad er:

Private sub SkrivFil(strFilnavn as String)
  dim strTekst as String
  strTekst = Text1.Text
  open filnavn for output as #1
    print #1, strTekst
  close #1
End Sub

det er jo ikke en command knap

jeg er ny i VB :)
Avatar billede razersedge Nybegynder
14. april 2001 - 14:43 #13
...eller er det?
Avatar billede razersedge Nybegynder
14. april 2001 - 14:44 #14
glemte lige, hvad så hvis jeg vil vælge hvad teksten skal gemmes som?? altså en \"gem som...\" funktion
Avatar billede razersedge Nybegynder
14. april 2001 - 14:59 #15
hmmmmm jeg har lagt:

Private sub SkrivFil(strFilnavn as String)
  dim strTekst as String
  strTekst = Text1.Text
  open filnavn for output as #1
    print #1, strTekst
  close #1
End Sub

..ind i et module og lavet en knap med dette i:

Sub Command1_Click()
  SkrivFil \"C:\\MinFil.txt\"
End Sub

men når jeg kører den og trykker på knappen kommer den med fejl og markere \"SkrivFil\" i command1 og den kommer med fejlen \" Compile error: sub or funktion not defined\" hvad betyder det og gør jeg det hele rigtigt
Avatar billede kaffe Nybegynder
14. april 2001 - 15:23 #16
Hvis du vil have det i et module skal det for det første være public, altså

Public Sub SkrivFil(strFilnavn as string)

Ellers kan den ikke finde den. Jeg gik ud fra at du havde det liggende i samme form.
Du skal lige rette linien

open filnavn for output as #1
til
open strfilnavn for output as #1

Forresten - hvis det ligger i et modul, skal du huske at skrive hvor text1 ligger henne. Linien

strTekst = Text1.Text
skal rettes til
strTekst = Form1.Text1.Text
(Eller hvad din form nu hedder)...
Avatar billede razersedge Nybegynder
14. april 2001 - 15:39 #17
ja nu virker det godt nok men måske fik jeg ikke lige forklaret det ordentligt, det jeg gerne vil have er en box der kommer op og spørger hvor den skal gemmes, og hvad den skal hedde. hvis du kan svare mig på det laver jeg lige et spørgsmål med 30 point til dig.
Avatar billede kaffe Nybegynder
14. april 2001 - 16:21 #18
Okay - der ville jeg bruge en commondialog kontrol.
Vælg \'Microsoft Common Dialog Control 6.0\'. Højreklik på værktøjslinien til venstre eller vælg \'Project\' | \'Components (Ctrl-T)\'.

Private Sub Command1_Click()
  CommonDialog1.ShowSave
  SkrivFil CommonDialog1.FileName
End Sub

Der er en masse indstillinger til CommonDialog, men prøv at rode lidt med dem.

Alternativt kan du bruge inputbox:

Private Sub Command1_Click()
  dim strStiNavn as string
  strStiNavn = inputbox(\"Skriv sti og filnavn - eks.: c:\\temp\\minfil.txt\",\"Gem fil\")
  SkrivFil strstinavn
End Sub 

Håber det hjælper

kaffe
Avatar billede razersedge Nybegynder
14. april 2001 - 17:15 #19
sidste spørgsmål... hvordan loader jeg så en fil fra et bibliotek?? altså nogen lunde som ovenstående bare den skal loade??
Avatar billede kaffe Nybegynder
14. april 2001 - 18:00 #20
Istedet for at bruge CommonDialog1.ShowSave skal du bruge CommonDialog1.ShowOpen

kaffe
Avatar billede razersedge Nybegynder
14. april 2001 - 18:01 #21
hvad hvis jeg brugte inbox??
Avatar billede razersedge Nybegynder
14. april 2001 - 18:02 #22
jeg forstod ikke lige det med common
Avatar billede kaffe Nybegynder
14. april 2001 - 18:43 #23
Okay - med inputbox ser det sådan ud

private sub command2_click()
  \' Åbne en fil
  dim strFilNavn as string
  dim strTekstIFil as string
  strfilnavn = InputBox(\"Skriv sti og filnavn på filen der skal åbnes\",\"Åbn fil\")
  Open strfilnavn for input as #1
    input #1, strtekstifil
  close #1
end sub

Avatar billede razersedge Nybegynder
14. april 2001 - 20:39 #24
den kommer godt nok ikke op med nogle fejl men den åbner heller ikke filen i text1, altså der sker ikke noget.
Avatar billede kaffe Nybegynder
14. april 2001 - 21:24 #25
Indholdet af filen, dvs den første linie af filen, ligger i strtekstfil. Prøv at skrive

msgbox strtekstifil

mellem close #1 og end sub.

Avatar billede razersedge Nybegynder
15. april 2001 - 00:30 #26
det for heller ikke indholdet af txt filen ind i text1, det åbner bare en msgbox hvor der står 1 linje af filen men 2 linje er der ikke og den kommer heller ikke ind i text1
Avatar billede mikker Nybegynder
15. april 2001 - 07:16 #27
Hvis du skal åbne en tekstfil med mere end en linie, skal du huske at din textbox skal stå til multiline = true (VB5)

Derudover skal du angive enten længden eller det antal linier du vil have ind i textboxen:

private sub command2_click()
  \' Åbne en fil
  dim strFilNavn as string
  dim strTekstIFil as string
  strfilnavn = InputBox(\"Skriv sti og filnavn på filen der skal åbnes\",\"Åbn fil\")
  Open strfilnavn for input as #1
\'------ cut ----- Se forslag herunder
do while not eof(1) \'eller er det (#1) ?
    input #1, strtekstifil
loop
\'------ cut -----
  close #1
end sub

Ovenstående er ikke testet, men bare sådan ud fra hovedet.
Prøv selv at bruge din hjælpefunktion i VB og søg eventuelt efter open, print#, write# osv.

- Mikker
Avatar billede kaffe Nybegynder
15. april 2001 - 09:45 #28
Det var også bare for at vise dig at den rent faktisk åbnede filen. Jeg skrev faktisk også \"...dvs den første linie af filen,... \".
Er din fil på flere linier skal du gøre som mikker har beskrevet ovenfor. Og det er så vidt jeg husker
do while not eof(1)
der skal anvendes.
Jeg ville skrive den således:

private sub Command2_Click()
  \' Åbne en fil
  dim strFilNavn as string
  dim strTekstIFil as string
  dim strHentetTekst as string
  strFilNavn = InputBox(\"Skriv sti og filnavn på filen der skal åbnes\",\"Åbn fil\")
  Open strFilNavn for Input As #1
    Do While Not EOF(1)
      Input #1, strTekstIFil
      strHentetTekst = strHentetTekst & strTekstIFil & chr$(13) & chr$(10)
    Loop
  Close #1
  Text1.Text = strHentetTekst
End Sub
Og husk - som mikker skrev - at MultiLine i Text1 skal være sat til True.

kaffe
Avatar billede razersedge Nybegynder
15. april 2001 - 11:19 #29
ja det virkede, mange tak!
Jeg opretter lige et spørgsmål med point til dig kaffe.
Avatar billede kaffe Nybegynder
15. april 2001 - 12:43 #30
Tak
kaffe
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
Kurser inden for grundlæggende programmering

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