Datensatz an Formular übergeben

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

dloew
Beiträge: 7
Registriert: Di, 13.08.2013 13:03

Datensatz an Formular übergeben

Beitrag von dloew »

Hallo Freunde,

ich bin neu hier. Bin bis jetzt von OO Base begeistert. Auch in dem Forum findet man viele Makros und Tipps...
Ich bin jetzt nur an einem Punkt, wo ich einfach nicht mehr weiter Komme, und auch im Forum keinen Rat finde.

Folgender IST Zustand:

Ich habe eine Tabelle mit > 200 Spalten. Es gibt z.B. Spalten Für Kunde (Name, Adresse,...) und Gegner (Name, Adresse,...)+
Ich habe ein Formular, mit dem ich neue Kunden eintragen kann. Dieser bekommt dann eine ID in der Tabelle.

In einem weiteren Formular habe ich Eine kleine Auswahl von Splaten der Datenbank als Tabelle und 2 Knöpfe. Auch Textbox, die mir die ID des Datensatzes anzeigt habe ich.
Kunde anlegen, Gegner hinzufügen.

Das mit Kunden anlegen funktioniert (öffnet ein Formular, das nur neue Datensätze anlegen kann)

Code: Alles auswählen

Sub Mandanten_Anlegen_Form
   ThisDatabaseDocument.FormDocuments.getByName( "Mandanten anlegen" ).open
End Sub
Jetzt will ich später einen Gegner hinzufügen. D.h. Ich wähle in der Tabelle eine Spalte aus, klicke auf Gegner hinzu.
Dann wir auch ein Gegner angelegt, nur leider in einer neuen Zeile.

Daher die Frage...
Wie kann ich per Knopf an ein Formular die ID eines Datensatzes übergeben, um dann in dem Formular dort Daten hinzuzufügen?

Danke schon mal,

Code: Alles auswählen

sub Gegnerdaten_Form( oEvent as variant )

   Dim oFeld as variant
   Dim sID as variant
   Dim oDoc as variant
   Dim oForm as variant
   Dim oDoc2 as variant
   Dim oForm2 as variant

   oDoc = StarDesktop.CurrentComponent
   oForm = oDoc.DrawPage.Forms.GetByIndex(0)
REM die ID des ersten Formulars wird ausgelesen (ist z.B. wie hier ein Formularfeld)
   oFeld = oForm.getByName("Textbox")
   sID = oFeld.text
   OpenForm(OEvent.Source.Model.Parent.ActiveConnection.Parent.DatabaseDocument.FormDocuments,
   _OEvent.Source.Model.Parent.ActiveConnection,
   _"Gegnerdaten hinzu") 
REM => dann Filter setzen
   oDoc2= ThisComponent 
   oForm2 = oDoc2.DrawPage.Forms(0) 
   oForm2.filter = "Aktenzeichen = " + sID
REM =>setzen des Filters für das neue Formulardokument
   oForm2.ApplyFilter=true
   oForm2.reload
end sub
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datensatz an Formular übergeben

Beitrag von RobertG »

Hallo dloew,

das Aktenzeichen, das Du an das zweite Formular weitergibst, ist nicht der Primärschlüssel? Sonst könnte das ja gar nicht sein, dass Du eine neue Zeile mit dem gleichen Aktenzeichen hin bekommst.

Das Formular, das Du öffnest, zeigt auch alte Datensätze an? Das müsste es unbedingt, denn sonst öffnest Du zuerst das Formular (für einen Datensatz), dann setzt Du den Filter und anschließend lädst Du das Formular (für den nächsten Datensatz) noch einmal neu.

Ich habe nicht so die riesige Kenntnis von Makros, aber
OpenForm(...,...,...)
muss doch irgendwo definiert sein.

Gruß

Robert
dloew
Beiträge: 7
Registriert: Di, 13.08.2013 13:03

Re: Datensatz an Formular übergeben

Beitrag von dloew »

*Handandenkopfklatsch*
Ich bin ja so doof....

Danke... Das Formular hat nur neue Daten angezeigt....
Eigentlich logisch, dass es nicht gehen konnte...
Wo kann man das eigentlich nachträglich ändern, ob ein Formular nur neue Daten anlegen darf, oder bestehende anzeigt?

Naja... So ist das wenn man mit einem neuen Programm mit Try and Error probiert.
Danke dann mal,
RobertG
********
Beiträge: 2067
Registriert: Fr, 13.04.2012 19:28
Kontaktdaten:

Re: Datensatz an Formular übergeben

Beitrag von RobertG »

Hallo dloew,

Du kannst die Eigenschaften des Formulars ändern, indem Du das Formular zum Bearbeiten öffnest (rechter Mausklick auf das Formular → Berabeiten).
Dann gehst Du z.B. auf ein Kontrollfeld, dort wieder aufs Kontextmenü → Formular
Eine vernünftige Übersicht, vor allem wenn Du mit Unterformularen arbeitest, hast Du mit dem Formularnavigator (Symbolleiste im Fenster unten).
Dann auf den Reiter "Daten" gehen und die gewünschte Einstellung vornehmen.

Gruß

Robert
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz an Formular übergeben

Beitrag von F3K Total »

Moin,
dloew hat geschrieben:Wo kann man das eigentlich nachträglich ändern, ob ein Formular nur neue Daten anlegen darf, oder bestehende anzeigt?
hin kommst Du wie Robert geschrieben hat, dann auf dem Reiter Daten:
Nur Daten hinzufügen: Ja/Nein
Gruß R
dloew
Beiträge: 7
Registriert: Di, 13.08.2013 13:03

Re: Datensatz an Formular übergeben

Beitrag von dloew »

Super,

danke vielmals....
Habe die Formulare immer neu gemacht^^

lernen durch schmerzen
F3K Total
********
Beiträge: 3720
Registriert: Mo, 28.02.2011 17:49

Re: Datensatz an Formular übergeben

Beitrag von F3K Total »

Hi,
hier gab es ein ähliches Thema, allerdings sollte aus einer Calc-Tabelle in ein, in eine .odb Datei eingebettetes, BASE_Formular gesprungen werden.

Um zur richtigen Zeile zu gelangen, Voraussetzung ist, dass man die ID, hier nID, aus dem Quelldokument mitbringt, eignet sich das Resultset.

Code: Alles auswählen

oresult=oform.createResultSet
oresult.first
nrow = 1
do
 nIDF=oresult.getint(1)
 if nID=nIDF then
   nfound=nrow
   exit do
 endif
 nrow=nrow+1
loop until oresult.next = false
oform.absolute(nfound)
Man durchläuft es, hier mit

Code: Alles auswählen

do
.
.
.
loop until
, bis die ID gefunden ist

Code: Alles auswählen

exit do
und springt mit

Code: Alles auswählen

 .absolute(nfound)
zur gesuchten Zeile.
Viel Erfolg
Gruß R
Antworten