hab ein echtes Verständisproblem mit VB gerade . Ich habe eine Datenbank unter Access erstellt zur Erfassung von Videokassetten. Dafür habe ich zwei Tabellen genommen und eine Beziehung hergestellt (1:n). Das ganze geht dann so: Ich lege eine Kassette in der 1.Tabelle an und in der zweiten Tabelle schreibe ich dann die Filme rein. Also kommen ca. 4 Datensätze der 2.Tabelle auf eine der 1.Tabelle. Jetzt will ich das Ganze nach VB portieren (Die grafische einrichtung ist einfach zu besch… *sorry* unter Access). Hab auch schon frölich angefangen rumzuprogrammieren, bis ich auf meine Datenbank nun stieß… ja wie mach ich das fragte ich mich dann… KEINEN PLAN… Ich kann mit einem ADODC Steuerelement eine Tabelle auswählen. Aber ich muss ja die Beziehung zwischen den beiden Tabellen haben, anbsonsten bringt es mir ja nichts. Somit kann ich mir nur ganz konkret alle Datensätze anzeigen lassen aber nich Kassettenspeziefisch… das ist GANZ GROSSER MIST!!!
Bitte, hat da jemand ne Idee *rumfleh*
Tschüß, in Hoffnung, Martin
PS: Ich hoffe, euch mit meinem Posting nicht erschlagen zu haben (halber Roman) aber ich wüsste nicht, wie ich das kürzer umschreiben könnte… wenn ihr es dennoch nicht versteht, bitt nachfragen!
wenn ihr es dennoch
nicht versteht, bitt nachfragen!
Also zum einen frage ich mich, wo sich denn die „grafische Einrichtung“ von Access sonderlich von der von VB unterscheidet…
Zum anderen: wenn Du eine Access-Datenbank von VB aus verwendest, kannst Du Deine Data-Controls doch auch auf Access-Abfragen basieren lassen. Und in einer derartigen Abfrage kannst Du doch auch z.B. die Verknüpfung zwischen den Tabellen realisieren. Oder Du legst halt 2 Data Controls auf deiner Form an, eine für die Master-, eine für die Detailtabelle und synchronisierst sie entsprechend. (Geht in Access aber eigentlich einfacher mit Unterformularen usw…)
Das ganze hängt aber sehr davon ab, was Du erreichen willst - und das wird aus Deinem Posting nicht so recht klar. Wie sollen denn nun die Filme und Kassetten dargestellt werden?
Danke ersteinmal für Deine Antwort!
Ich erkläre es mal etwas anders schritt für schritt:
Eigendlich ist es eine ganz simple Datenbank. Stell Dir nur 2 Formulare Vor (Ein Hauptformular und ein Unterformular). Bei der Datensatznavigierung im Hauptform. stell ich die Nummer meiner Kassette ein. In der Datensatznavigierung des Unterform. die jemweiligen Filme der Kassette (sind ja immer mehr als einer darauf). Das ist das Grundprinzip meiner Datenbank. Nur habe ich nicht ein Paar sondern 3 paare von diesen Formularen.
Grafik under Access ist eigendlich ganz einfach, bis zu einem gwissen Punkt. Um es simple zu sagen: Ich will ganz weg von den ganzen Steuerelementen von Access (also auch die Datensatznavigation). Ich möchte dafür selber gemachte Bilder als Schalter nehmen (ist ja auch einfach) nur müssen diese Schalter genau positioniert werden, weil diese mit dem Hintergundbild des Formulars harmonieren sollen. Da ergibt sich ein Problem mit Access. Wenn ich die Bilder in der Entwurfsansicht genau so setze wie ich sie haben möchte (und das ist Millimeterarbeit) sind sie in der Normalansicht nicht mehr da, wo sie seien sollten ?-(. Wenn ich dann wieder in die Entwurfsansicht zurückwechsele, ist alles wieder wie vorher. In Access ist also alles ein wenig verschoben. Das nervt schon mal ganz schön, wenn es eine ganze menge Bilder sind, die ich da setzen will. Das ist bei VB anders. Da stimmt nämlich alles.
Ich arbeite bei VB mit ADODC-Steuerelementen um in Datenbanken zu navigieren, da sie besser geeignet sind als das standard Data-Steuerelement. Im Nachhinein möchte ich mir ja auch die gesammt vorhandenen Datensätze anschauen und das geht meines Wissens nach mit einem ADODC Steuerelement besser. Außerdem hatte ich schon schwirigkeiten mit dem Data-Steuerelement, wenn ich einen Datensatz hinzufüge und dann doch nichts eintrage (stürtzt dann ab).
Wenn ich einen Abfrage machen würde, dann kann ich doch gar nicht so verfahren wie ich das mit Access gemacht habe (Erst Kassette auswählen, dann einen Film auswählen). Bei einer Abfrage habe ich die ganzen Daten in einer Reihe, also wie in einer Liste. Das ist aber nicht meine Absicht…
Du hattes doch was von synchronisation erzählt… das hört sich nach dem an, was ich brauche *g*… Kannst Du mir das mal erklären, wie dich das anstelle? *hoff*
zum einen eine kleine Bemerkung.
datengebundene Controls senken die Performance eines Rechner unheimlich.
Mach mal eine größere Datenbank auf und
schau dann mal nach deiner Prozessorauslastung (ca 100%).
Aus diesem Grunde würde ich gan einfach die Daten per SQL auslesen und in deine Felder schreiben.
Ich geh mal davon aus, das du in der Tabelle 1 einen eindutigen Schlüssel für deinen Vidoefilm hast (Zähler oder sonstiger PrimaryKey). In der Tabelle 2 dürften dann die Zusatzinformationen zu den Filmen mit dem PrimaryKey as Tabelle 1 stehen.
Les beim Start die Daten aus Tabelle 1 in eine Combobox oder Listbox ein und Schreib den PrimaryKey als Itemdata mit rein.
Wenn du dann den Eintrag anklickst, les über SQL die restlichen Daten ein.
Wenn du ein kleiens Beispiel brauchst, melde dich.
Danke ersteinmal für Deine Antwort!
Ich erkläre es mal etwas anders schritt
für schritt:
Eigendlich ist es eine ganz simple
Datenbank. Stell Dir nur 2 Formulare Vor
(Ein Hauptformular und ein
Unterformular). Bei der
Datensatznavigierung im Hauptform. stell
ich die Nummer meiner Kassette ein. In
der Datensatznavigierung des Unterform.
die jemweiligen Filme der Kassette (sind
ja immer mehr als einer darauf). Das ist
das Grundprinzip meiner Datenbank. Nur
habe ich nicht ein Paar sondern 3 paare
von diesen Formularen.
Warum nimmst du kein Grid für die Daten der abhängigen Tabelle?
Grafik under Access ist eigendlich
ganz einfach, bis zu einem gwissen Punkt.
Um es simple zu sagen: Ich will ganz weg
von den ganzen Steuerelementen von Access
(also auch die Datensatznavigation). Ich
möchte dafür selber gemachte Bilder als
Schalter nehmen (ist ja auch einfach) nur
müssen diese Schalter genau positioniert
werden, weil diese mit dem Hintergundbild
des Formulars harmonieren sollen. Da
ergibt sich ein Problem mit Access. Wenn
ich die Bilder in der Entwurfsansicht
genau so setze wie ich sie haben möchte
(und das ist Millimeterarbeit) sind sie
in der Normalansicht nicht mehr da, wo
sie seien sollten ?-(. Wenn ich dann
wieder in die Entwurfsansicht
zurückwechsele, ist alles wieder wie
vorher. In Access ist also alles ein
wenig verschoben. Das nervt schon mal
ganz schön, wenn es eine ganze menge
Bilder sind, die ich da setzen will. Das
ist bei VB anders. Da stimmt nämlich
alles.
In Access kannst Du z.B. transparente Schaltflächen machen - dann kannst Du die gesamte Bildinformation als Hintergrundbild ablegen (Der Schaltereffekt der Schaltfläche geht dann natürlich verloren…)
Ich arbeite bei VB mit
ADODC-Steuerelementen um in Datenbanken
zu navigieren, da sie besser geeignet
sind als das standard Data-Steuerelement.
Im Nachhinein möchte ich mir ja auch die
gesammt vorhandenen Datensätze anschauen
und das geht meines Wissens nach mit
einem ADODC Steuerelement besser.
Außerdem hatte ich schon schwirigkeiten
mit dem Data-Steuerelement, wenn ich
einen Datensatz hinzufüge und dann doch
nichts eintrage (stürtzt dann ab).
Das ADODC-Steuerelement kenne ich nun nicht so gut…
Wenn ich einen Abfrage machen würde,
dann kann ich doch gar nicht so verfahren
wie ich das mit Access gemacht habe (Erst
Kassette auswählen, dann einen Film
auswählen). Bei einer Abfrage habe ich
die ganzen Daten in einer Reihe, also wie
in einer Liste. Das ist aber nicht meine
Absicht…
Das hängt - wie so vieles - von der Darstellung und dem gewünschten Effekt ab…
Du hattes doch was von synchronisation
erzählt… das hört sich nach dem an, was
ich brauche *g*… Kannst Du mir das mal
erklären, wie dich das anstelle? *hoff*
Auch hier gibt es eine Menge Möglichkeiten - Du kannst ja z.B. das eine Data-Control dynamisch über das andere einschränken, z.B. so:
Private Sub Data1\_Validate(Action As Integer, Save As Integer)
Data2.RecordSource = "SELECT \* FROM [Title Author] Where Au\_ID = " & Text1
Data2.Refresh
End Sub
Private Sub Data2\_Validate(Action As Integer, Save As Integer)
Data3.RecordSource = "SELECT \* FROM Titles Where ISBN = '" & Text3 & "'"
Data3.Refresh
End Sub
(Beispiel mit der Biblio-Beispieldatenbank)
Das sollte mit dem ADODC-Steuerelement ähnlich gehen…
Das Zauberwort heißt SQL.
Ich habe bisher immer nur die DAO´s (ältere Version von ADO) benutzt, aber die Lösung dürfte trotzdem die gleich sein.
Du mußt einen SQL-Ausdruck
wie SELECT * FROM FILME WHERE K_Nr = ;
wobei für den Primärschlüssel der 1. Tabelle steht.
Viele Grüße, Markus
PS Du kannst mich auch direkt anmailen.
[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]