Formular mit GET/POST

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Formular mit GET/POST

Beitrag von S.Eder »

Hallo Forum,

Ich spiele mich schon wieder 1 std und schaffe es nicht ein einfaches Formular zu erstellen!
Ich würde gern ein Formular erstellen indem ich einen Wert eingebe ( Primärschlüßel ) und danach erscheint der Datensatz aus Tabelle A.
Danach sind noch ein paar Felder auszufühlen und dann wird der komplette Datensatz in Tabelle B geschrieben!

Mein Lösungsansatz:

Ein Formular mit POST und ein Unterformular mit GET, jedoch funktioniert es so nicht :(!

FA = das Feld zum ausfüllen
OOForum.jpg
OOForum.jpg (115.78 KiB) 2206 mal betrachtet
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

S.Eder hat geschrieben:Mein Lösungsansatz:

Ein Formular mit POST und ein Unterformular mit GET, jedoch funktioniert es so nicht :(!
Kein Wunder!

Aus der Programmhilfe F1, Formular, Register "Allgemein"
Art des Submits
Geben Sie hier die Methode für die Übermittlung der Daten im ausgefüllten Formular an.
Anhand der Methode "get" werden die Daten aller Kontrollfelder als Umgebungsvariablen übertragen. Sie werden in der Form "?Kontrollelement1=Inhalt1&Inhalt2=Inhalt2&..." an den URL angehängt, und die Zeichenkette wird auf dem Empfangsserver durch ein Programm ausgewertet.
Bei Verwendung der Methode "post" wird aus dem Inhalt des Formulars ein Dokument erstellt und dieses an den angegebenen URL gesendet.
Du brauchst einen formularbasierten Filter für Deinen Primärschlüssel, dann können die anderen "gefühlten" Felder auch in Datensatz B geschrieben werden.
Hole Dir mal FilterExamples.zip aus diesem Thread

Hilft das weiter?
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Jaein, da ich nur geringe SQL Kenntnisse habe.

____________________

Nochmal zum Schema:

Rot = zum Ausfüllen
Schwarz = "Auto - Feld" - Filter ( aus tab_FA )
Gelb= zum Ausfüllen

Speichern in tab_smd
OOForum.jpg
OOForum.jpg (95.97 KiB) 2185 mal betrachtet
aus dem Tutorial:

Code: Alles auswählen

Select "Filter" .* FROM "Filter" As "Filter" WHERE "ID"=0
mein Fall:

Code: Alles auswählen

Select "tab_FA" .* FROM "tab_FA" AS "tab_FA" WHERE "ID"=0
OOForum1.jpg
OOForum1.jpg (107.7 KiB) 2185 mal betrachtet
Jedoch bekomm ich hier schon einen syntax error.


lg
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

Zunächst zum Formular-Aufbau:

Dein Auswahlfeld FA sollte zum MainForm gehören, dessen Daten der zu schreibenden Tabelle zugeordnet sind.

Eigenschaften des Kontrollfeldes FA
Datenfeld: FA (wie auch immer es in der Ziel-Tabelle heisst)
Ereignis>Bei FokusverlustMakro refresh_FA/color] zuordnen

Deine Anzeigefelder werden aber einer anderen SubForm zugeordnet (die werden ja auch nicht in die Tabelle geschrieben, oder?)


Diese SubForm beziehen ihre Daten aus der Tabelle, welche die Einzelheiten des FA enthält.


Mit dem Makro setzt Du die Inhalte der anderen Kontrollfelder, durch Setzen eines Filters

IN ETWA (da ungetestet!)

Code: Alles auswählen

Sub refresh_FA( oEvent ) 
' Routine zum Einstellen der FA-Daten


' alle Formulare
oForms = oEvent.Source.Model.Parent.Parent

oForm = oForms.getByName( "MainForm" )
ofrm_FA = oForms.getByName( "frm_FA" )

'aktuellen Wert 
oFeld = oForm.getByName( "FA")
sFA = oFeld.String

With ofrm_FA
 .filter = "FA = " & sFA
 .ApplyFilter=true
 .reload
End With 

End Sub

Für weitere Hilfestellung ist es praktisch unerlässlich, dass Du Deine ODB mal hochlädst.
Achte darauf, dass keine personenbezogenen Daten enthalten sind.
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Ne irgendwie bekomm ichs nicht hin, ich lade mal die DB hoch.
Wenn du mal ein Auge darauf werfen könntest wäre mir weitergeholfen.

lg
Dateianhänge
test3_db.rar
(63.39 KiB) 56-mal heruntergeladen
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

Ich helfe gerne, andere vielleicht aber auch.

Deine DB enthält auch keine schützenswerten Daten, deshalb wäre es sinnvoll ein neues Archiv OHNE PASSWORT zu erstellen.

Bin erstmal ein paar Stunden zum Abendessen unterwegs - vllt. kann ich später nochmal auf Dein Problem zurück kommen, vllt. kann ein anderer helfen (wenn Du ihm die Chance gibst ;))
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Ja ich gebe einfach das Passwort bekannt :-).
Das Passwort lautet:"com"
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

Habe Dir mal ein Beispiel gebastelt:

Das Listenfeld FA oben wird aus der tab_FA gespeist.

Bei einem Wechsel des angezeigten Werts greift das (Eigenschaften>Ereignisse>)Modifiziert-Makro und setzt die Felder der Unterform frm_FA durch Hinzufügen eines Filters.

Den Rest darfst Du selbst basteln.

Viel Erfolg!
db_fehler.odb
ODB mit Listenfeld-Filter im Formular
(36.59 KiB) 80-mal heruntergeladen
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Hey,

Echt toll geworden, jedoch wollte ich es jetzt ohne Listenfeld probieren und mit einem normalen Textfeld funktioniert es nicht ( liegt das am Makro oder).
Da es nachher zuviele FA's geben würde um die zu suchen

Desweiteren wollte ich ein Marko erstellen damit die Felder FA mit FA verknüpft werden.

Code: Alles auswählen

Sub refresh_FA( oEvent ) 
' Routine zum Einstellen
' 2011 - 23 - 09

' alle Formulare
oForms = oEvent.Source.Model.Parent.Parent

oForm = oForms.getByName( "MainForm" )
ofrm_FA = oForms.getByName( "frm_FA" )

'aktuellen Wert in ein anderes Feld schreiben 
 oFeld.getbyName("txtFA") = oForm.getByName( "lst_FA")
 oFeld.getbyName("txtBaugruppe") = oForm.getByName( "lst_FA")
 oFeld.getbyName("txtVersion") = oForm.getByName( "lst_FA")
 oFeld.getbyName("txtStückzahl FA gesamt") = oForm.getByName( "lst_FA")
End Sub
bekomme jedoch einen Fehler das er die Variable nicht kennt?
Kann ich so Textfelder nicht ansprechen ?
Gibt es hier ein gutes Tutorial ? Wie man Formulare/Felder anspricht per Makro
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

Code: Alles auswählen

Sub refresh_FA( oEvent ) 
' Routine zum Einstellen
' 2011-09-16
' 2011-09-23

' alle Formulare
oForms = oEvent.Source.Model.Parent.Parent

oForm = oForms.getByName( "MainForm" )
ofrm_FA = oForms.getByName( "frm_FA" )

'aktuellen Wert 
oFeld = oForm.getByName( "lst_FA")

id = oFeld.String

With ofrm_FA
 .filter = "FA = '" & id  & "'"
 .ApplyFilter=true
 .reload
End With 

oForm.getByName( "txtFA" ).String = id

End Sub

Gebunden an Ereignis "Fokusverlust" des ehemaligen Listenfeldes.




Standardtipps zum Erlernen von StarBasic:

Andrews Makro-Dokument
und ein Objekt-Inspektions-Tool, wie
XRAY

siehe auch: Andrews Base-Dokument


OOo Base Tutorials: http://www.tutorialsforopenoffice.org/c ... /base.html
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Code: Alles auswählen

oForm.getByName( "txtFA" ).String = id
Bekomme hier einen Laufzeitfehler!?


Moderation,4: Vollzitat gekürzt
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

S.Eder hat geschrieben:Bekomme hier einen Laufzeitfehler!?

Bitte genauen Text evtl. Fehlermeldungen angeben!

Prüfe, ob das Kontrollelement "txtFA":
  • ein Textfeld ist
  • im Formular MainForm liegt (Formular-Navigator); da ist es jedenfalls in meiner Beispieldatei
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Ja ist es eigendlich. :?

Ich hab mal einen Screen gemacht von der Fehlermeldung, und werde mich jetzt mal in die Tutorials einlesen.
OOForum2.jpg
OOForum2.jpg (24.29 KiB) 2091 mal betrachtet

lg
Benutzeravatar
komma4
********
Beiträge: 5332
Registriert: Mi, 03.05.2006 23:29
Wohnort: Chon Buri Thailand Asia
Kontaktdaten:

Re: Formular mit GET/POST

Beitrag von komma4 »

Die Fehlermeldung sagt, dass eine falsche Anzahl Parameter übergeben wird:

Du rufst über [rechte Maustaste]Kontrollfeld...>Ereignisse>Modifiziert auf - da wird der EVENT Parameter übergeben

Deine SUB sieht dann so aus:

Code: Alles auswählen

Sub refresh_FA( oEvent )
Cheers
Winfried
aktuell: LO 5.3.5.2 30m0(Build:2) SUSE rpm, unter Linux openSuSE Leap 42.3 x86_64/KDE5
DateTime2 Einfügen von Datum/Zeit/Zeitstempel (als OOo Extension)
S.Eder
**
Beiträge: 26
Registriert: Mi, 14.09.2011 11:09

Re: Formular mit GET/POST

Beitrag von S.Eder »

Hi,

könntest du neben den Befehlen kurz eine Beschreibung hinterlassen.
Damit ich das Makro mal verstehe.

Bsp:

Code: Alles auswählen

If(A==1) {} // wenn die Variable A 1 ist wird die IF Anweisung durchlaufen.
Also das mit den wrong parametern ist einfach ein "Variablen - Übergabe" Fehler? = So verstehe ich es jetzt aufjedenfalls

lg
Antworten