VB6 - Datenbanken und Beziehungen??????

Von: , Frage gestellt am Mi, 6. Okt 1999

Hi Leute,

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!

5 Antworten zu dieser Frage

  1. Antwort von nach einer Stunde hilfreich
    Re: VB6 - Datenbanken und Beziehungen??????

    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?

    Reinhard

    • Antwort von nach 17 Stunden hilfreich
      Re^2: VB6 - Datenbanken und Beziehungen??????

      Hi!

      Danke ersteinmal für Deine Antwort!
      Ich erkläre es mal etwas anders schritt für schritt:

      1. 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.

      2. 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.

      3. 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).

      4. 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*

      Bye, Martin

      • Antwort von nach 20 Stunden hilfreich
        Re^3: VB6 - Datenbanken und Beziehungen??????

        Hallo Martin,

        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.

      • Antwort von nach 23 Stunden hilfreich
        Re^3: VB6 - Datenbanken und Beziehungen??????

        Hi!

        Danke ersteinmal für Deine Antwort!
        Ich erkläre es mal etwas anders schritt
        für schritt:

        1. 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?
        2. 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...)
        3. 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...
        4. 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....

        Reinhard

  2. Antwort von nach 4 Tagen hilfreich
    Re: VB6 - Datenbanken und Beziehungen??????

    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 = <KasettenNr>;
    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]

Keine passende Antwort gefunden? Jetzt eigene Frage stellen!