Homevideothek

lazkopat

Grünschnabel
Alsoooo

ich programmiere zur zeit ein programm für mich, um meine homevideothek zu verwalten

ich habe eine tabelle mit access erstellt mit meinen filmen
neun spalten sind vorhanden:

Filmtitel
Schauspieler1
Schauspieler2
Schauspieler3
Regie
Filmnummer
Jahr
Bemerkungen
Schwarz/Weiß?


zuerst mal die allgeimene beschreibung wie es am ende aussehen soll:

zuerst ein eröffnungsformular mit 3 command buttons:

suche nach filmtitel
suche nach schauspieler
suche nach regisseur

nach anklicken wird dann wieder ein formular geöffnet

suche nach filmtitel habe ich schon abgeschlossen
er geht mir die ganze tabelle durch und listet mir alle filme(einträge die auf der ersten spalte sind) auf der lsit1 auf

durhc anklicken des films öffnet sich form3

auf der form3 sind 9 labels vorhanden die er mit allen angeaben der tabelle ausfüllt

so.. diese suchfunktion will ich auch für schauspieler und regisseur einfügen aber mein problem:

ich habe natürlich mehrere filme bei dem ein bestimmter schauspieler mitspielt
z.B.

suche nach: Sean Connery

dann listet er mir mehrere male seran connery auf der lsite auf

ich will aber dasser mir, wenn ich auf der list1 auf ein schauspieler, der nur 1mal auf dieser liste vorkommen soll, klicke, mir dann alle filme von ihm auf der zweiten listbox auflistet

bei regisseur ist es wieder eine stufe einfacher, da ich für schauspielr 3 spalten habe, aber er soll mir alle 3 spalten durchsuchen und die gesamt anzahl an verschiedenen schauspieler auflisten

ich weiß nicht ob ichs richtig erklären konnte aber ich hoffs mal

bitte helft miiiiiiiiir
:rolleyes:
 
Hallo,
eine Frage wie durchsuchst du die Datenbank?

Ich würde das mit einem SQL-Statement machen:
Beispiele hierfür findest du hier:
http://www.activevb-archiv.de/cgi-bin/upload/search.pl und such da einfach mal nach ado!
Das Beispiel ADO_Adress_Demo von Peter Sauer ist sehr gut umsetzbar und das Ado_Beispiel von Oxygen (Florian Reischl) ist auch nicht zu verachten. Achte hierbei darauf immer die aktuellste Version zu nehmen (aufs Datum achten!).

Ich an deiner Stelle würde ein ListView verwenden. Das eignet sich besser für eine Datenbank.

MFG Peter
 
könnt ich vielleicht das ganze projekt erstmal schicken? vielleicht ist es einfacher wenn du auch das projekt vor dir hast...

aber wenn das nicht möglich ist:

so such ich nach filmtitel:


Also codes bei form2:

Code:
Dim MyConn As ADODB.Connection  
Public MyRecSet As ADODB.Recordset  
Dim filmtitel As String  
Dim schauspieler1 As String  
Dim schauspieler2 As String  
Dim schauspieler3 As String  
Dim regie As String  
Dim filmnummer As String  
Dim bemerkungen As String  
Dim jahr As String  
Dim schwarzweiß As String  
Dim id As Long    



Private Sub Command1_Click()    
List1.Clear    
Set MyConn = New ADODB.Connection  
MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Pfad\video.mdb;"  
MyConn.Open    
Set MyRecSet = MyConn.Execute("SELECT id,Filmtitel FROM video")    

Do Until MyRecSet.EOF      

id = MyRecSet.Fields.Item("id").Value     

 filmtitel = MyRecSet.Fields.Item("Filmtitel").Value
        
List1.AddItem filmtitel      
List1.ItemData(List1.NewIndex) = id
        
MyRecSet.MoveNext 

 Loop    

MyConn.Close      

End Sub

und code bei form4 wo die labels nach der tabelle ausgefüllt werden:



Code:
Private Sub Form_Load()      
Set MyConn = New ADODB.Connection  
MyConn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=Pfad\video.mdb;"  
MyConn.Open
  
If Form2.List1.ListCount > 0 Then      
If Form2.List1.ItemData(Form2.List1.ListIndex) > 0 Then          
Set MyRecSet = MyConn.Execute("SELECT * FROM video Where id=" & Form2.List1.ItemData(Form2.List1.ListIndex))             
 For i = 1 To MyRecSet.Fields.Count - 1                  
Label1(i - 1).Caption = MyRecSet.Fields(i).Value

              
Next       
  
 MyRecSet.Close     
     
Set MyRecSet = Nothing   
   
End If  End If  MyConn.Close 
   
End Sub


so geht er mir die ganze datenbank durch und listet mir alle filme auf der list 1 auf

auf der Form3 hab ich 9 labels... da ich auf der tabelle bei access 9 felder habe, füllt er mir bei form3 alle labels nach diesen feldern

beispiel:

ich klick auf film Blabla auf der list1

form3 wird angezeigt

label1.Caption = filmtitel ---> Blabla
label2.caption = schauspieler2 ----> Peter
label3.caption = schauspieler3 ----> Nadine
...
...
...

das funktioniert auch ohne probleme, da ich kein titel hab der 2 mal vorkommt

mein problem ist:

wenn ich mit denselben codes auch eine suchfunktion für schauspieler einbauen würde, würde er mir z.B. mehrmals Nadine auflisten auf meiner liste, da er ja durch diese codes einfach die ganze datenbank durchgeht und alle einträge einfach auflistet

ich will aber:

er soll sehen dass z.B. Brad Pitt mehrmals vorkommt und ihn mir nur 1 mal auflistet

und wenn ich auf der list 1auf Brad Pitt Klicke soll er mir auf einer zweiten listbox alle filmtitel auflisten, wo Brad Pitt vorkommt

wie ich dann von der zweiten listbox auf form3 komme ist wieder einfach... da kann ich wieder die codes von for2 ( von der suchfunktion für filmtitel) übernehmen

mein problem ist , wie gesagt, dass er mir mehrmals denselben namen auflistet..
soll er aber nur 1 mal und auf der zweiten listbox alle filmitel wo dieser bestimmte name vorkommt auflistet


jetzt verständlicher hoff ich
 
Zuletzt bearbeitet:
Hallo,

du hast ja als Itemdata in der ListBox immer deine Filmid's.
du könntest einfach immer die Listbox abtasten ob der Schauspieler drinsteht und dann einfach den neuen Film zur Itemdata hinzufügen. Also einfach die neue Id des Films einfach noch dazuhauen. Am besten trennst du das ganze mit einem sogenannten Delimiter. Das sieht dann so aus:
FilmID = FilmID & ";" & FilmIDneu
Delimiter ist hier ";" . Sollte ein Zeichen sein das im String sonst nicht vorkommt!
Das ganze kannst du nachher wieder per Split trennen und in ein Array laden
Dim xArray() As String
xArray = Split(FilmID,";")
Dann stehen die FilmID's in dem Array und du kannst diese so abrufen:
For i = 0 to Ubound(xArray)

Das sollte die denk ich weiterhelfen, sodass du dein Programm weiterbasteln kannst ;)
Wenn nicht schicks mir halt ma per mail

MFG Peter
 
öhöm .. das habe ich jetzt nicht wirklich verstanden...

:(

auch was ich bisher hab, hab ich von anderen tuts einfach bei mir reinkopiert und die notwendigen pfade usw. individuell verändert

bin nicht der große programmierer... wenn du jetzt noch online bist und zeit kann ich s dir schicken - wenn nicht versuch ich mal was mit deinen codes anzufangen ;)
 
Zurück