Adressen speicher - Wie am besten?

G

gRaf-eny

Hallo,
ich möchte ein Programm schreiben, in welches ich daten von leuten reinladen kann:

Name
Adresse
Geburtstag
Tel
und ein Bild

Wie mach ich das am besten ?

Wenn ich das Prog starte sollen alle vorhandenen einträge geladen werden und ich will neue dazu schreiben können -

Was ist eine gut idee?
Einen Ordner, indem für jeden User eine txt datei und ein jpg ist ?

Oder wie macht man das am besten?
 
ich suche momentan ja noch nach der idee des prinzips :)
ich hab nämlich kein ahnung wie es überhaupt geht irgendwas zu speichern...

ok ich hab schon mal ne txt datei geöffnet und gespeichert.. aber das wars

also mir geht erstmal ums prinzip
und dann um den code

:))
 
Wie vorher schon gesagt ist es mit Datenbanken am besten zu machen.....aber damit du ersteinmal einen Anfangserfolg hast probieren wir es mal mit txt.
Wenn dir die Lösung nicht reicht gehen wir das mal mit ner DB an.

In meinem Vorschlag verwende folgende Werte:

eine Text datei erstellen mit dem Namen "anzahl.txt"
drin stehen muss eine 0
eine Text datei erstellen mit dem Namen "daten.txt"
drin stehen soll gar nix


modul erstellen (modvar)
code für das modul:

option explicit
public name(100) as string
public adresse(100) as string
public geburtstag(100) as string
public telefon(100) as string
public foto(100) as string
public dateiname as string
public zeilen as string
public zeilenr as long
public sz as long
public eintrag(600) as long
public wz as long

code modul ende

form erstellen (frmstart)
button erstellen (cmdanzeigen)
button erstellen (cmdneu)

code für frmstart:

private sub cmdanzeigen_click ()
frmanzeigen.show
end sub

private sub cmdneu_click ()
frmneu.show
end sub

code ende frmstart

form erstellen (frmanzeigen)
text feld erstellen (txtanzeige)
text feld erstellen (txtausgabe) MultiLine !
bild feld erstellen (picfoto)
button erstellen (cmdvor)
button erstellen (cmdzurueck)

code für frmanzeigen

private sub form_load()
dateiname = "anzahl.txt"
open dateiname for input as 4
do until eof(4) = true
line input #4, zeilenr
wz = zeilenr
doevents
loop
close 4

dateiname = "daten.txt"
open dateiname for input as 4
do until eof(4) = true
line input #4, zeilen
sz = sz + 1
eintrag(sz) = zeilen
doevents
loop
close 4
sz = 1
for t = 1 to wz
name(t) = eintrag(sz)
sz = sz + 1
adresse(t) = eintrag(sz)
sz = sz + 1
geburtstag(t) = eintrag(sz)
sz = sz + 1
telefon(t) = eintrag(sz)
sz = sz + 1
foto(t) = eintrag(sz)
next t
sz = 1
txtanzeige = name(sz)
txtausgabe = name(sz) & ", " & adresse(sz) & ", " & geburtstag(sz) & ", " & telefon(sz)
picfoto.picture = load foto & ".bmp"
end sub

private sub cmdvor ()
sz = sz + 1
txtanzeige = name(sz)
txtausgabe = name(sz) & ", " & adresse(sz) & ", " & geburtstag(sz) & ", " & telefon(sz)
picfoto.picture = load foto & ".bmp"
end sub

private sub cmdzurueck ()
sz = sz - 1
txtanzeige = name(sz)
txtausgabe = name(sz) & ", " & adresse(sz) & ", " & geburtstag(sz) & ", " & telefon(sz)
picfoto.picture = load foto & ".bmp"
end sub
code ende frmanzeigen

form erstellen (frmneu)
text feld erstellen (txtname)
text feld erstellen (txtadresse)
text feld erstellen (txtgeburtstag)
text feld erstellen (txttelefon)
text feld erstellen (txtfoto)
button erstellen (cmdspeichern)
code für frmneu

private sub form_load ()
dateiname = "anzahl.txt"
open dateiname for input as 4
do until eof(4) = true
line input #4, zeilenr
wz = zeilenr
doevents
loop
close 4

private sub cmdspeichern ()
wz = wz + 1
name(wz) = txtname
adresse(wz) = txtadresse
geburtstag(wz) = txtgeburtstag
telefon(wz) = txttelefon
foto(wz) = txtfoto
schreib = wz
dateiname = "anzahl.txt"
gh = FreeFile
Open dateiname For Output As #gh
Print #gh, schreib
Close #gh
sz = 1
schreib = ""
for t = 1 to wz
name(t) = eintrag(sz)
sz = sz + 1
adresse(t) = eintrag(sz)
sz = sz + 1
geburtstag(t) = eintrag(sz)
sz = sz + 1
telefon(t) = eintrag(sz)
sz = sz + 1
foto(t) = eintrag(sz)
schreib = schreib & name(t) & vbnewline & adresse(t) & vbnewline & geburtstag(t) & vbnewline & telefon(t) & vbnewline & foto(t)
next t

dateiname = "daten.txt"
gh = FreeFile
open dateiname for output as #gh
print #gh, schreib
close #gh
msgbox "gespeichert", vbokonly
end sub


Die Eingabe Foto sollte den namen deines Bildes enthalten. z.b. 1 wenn dein Bild 1.bmp heisst. In diesem Code sind keinerlei Fehlerabfragen.....alles nur zum basteln.
Ich hoffe das ich keinen Schreibfehler im Code habe.....das ganze ist auch nur ein Ansatz und wirklich nicht das beste. Das ganze besser machen kannste zum Beispiel mit Listboxen statt Textfeldern bei der Ausgabe - dann fallen auch die cmds weg. Naja is ja nur damit du was zum probieren hast. Ich hoffe es hilft dir.
Gruß
Mat
 
@MatMagic:
Wow, cool das du dir so viel Mühe gemacht hast! Jetzt habe ich es sogar gecheckt!
Vielen Dank!
 
Hallo.
Also bei mir klappt da nun garnichts.
Unter welcher VB Version käuft das den bei euch ?
 
hallo leute,
ich will nicht als gast klugscheissern, aber wieviele daten sollen denn da maximal rein?

wenn du nämlich kein ganzes telefonbuch anlegen willst, das dem der telekom konkurrenz machen können soll, würde ich dir zu einer einfacheren variante raten:
du legst eine form an mit einer listbox für die namen und den textfeldern für jeden inhalt, den du sichern willst (zum foto später).
jetzt würde ich dir zu einer stringmanipulation raten: zb
Datensätze werden mit "$" getrennt und Daten der Datensätze mit "§".
jetzt brauchst du nur folgenden code zum einlesen

dim datensaetze() as string
dim daten() as string

public function einlesen()

dim eingang as string
dim speicherort as string
speicherort = DEIN ORT

if dir(speicherort)= "" then
'wenn daten nicht vorhanden aufhören
MsgBox "Keine Daten gefunden! Die Datei existiert nicht!", vbCritical, Me.Caption
exit function
else
'laden
open speicherort for input as #1
input #1, eingang
close #1
'zerlegen
'verhindern das die datei leer ist
if eingang = "" then
msgbox "Keine Daten in der Datei!", vbInformation, me.caption
exit function
end if
datensaetze = split(eingang, "$", -1)
'in listbox List1 einfügen
'gewähltes auslesen
'zähler variblen
dim n as integer
dim i as integer
for n= 0 To LBound(datensaetze)
daten = split(datensaetze(n), "§", -1)
List1.AddItem daten(0) & ", " & daten(1)
next
end if
end function

Private Sub List1_Click()
daten = Split(datensaetze(List1.ListItem), "§", -1)
dim x as integer
for x = 0 to LBound(daten) - 1
txtFields(x).Text = daten(x)
next
EINFÜGEN INS IMGBOX [daten(letztes element)]
end sub

wenn du nun ein foto dabei haben willst kannst du neben der personen daten auch noch in die reihe den specherort eines bildes eintragen (mit filecopy kannst du es auch in deinen ordner kopieren).

das ist eine einfache version einer datenbank struktur, die meiner erfahrung nach für solche zwecke voll aureicht.
ich hoffe der code ist fehlerfrei (ev. hab ich LBound mit UBound vertauscht).

viele grüße
 
Zurück