Da DB zerstört, Hilfe gesucht...

Datenbanklösungen mit AOO/LO

Moderator: Moderatoren

hobby
*
Beiträge: 13
Registriert: Sa, 01.05.2010 19:11

Da DB zerstört, Hilfe gesucht...

Beitrag von hobby »

Hallo nochmals,

also, (wie aus einem vorherigen Thema hervorgeht ist) meine DB nun endgltig nicht mehr zu retten.
Ich habe nun mehr als drei Tage umsonst gearbeitet und würde mich freuen, wenn jemand von euch mir helfen könnte:

Im Anhang ist eine DB, (frisch erstellt, zu Demozwecken, nur eine Tabelle) mit einem Formular.
1)
Ich würde gerne mittels der vorh. Listbox einen Datensatz selektieren und dann das Formular neuladen, damit eben dieser Datensatz angezeigt wird.

2)
Es ist ein Button zu finden, welcher als Switch zum (de-) aktivieren der Optionen "Datensatz löschen", "- erstellen", "- bearbeiten" dienen sollte, um dem Anwender mehr Sicherheit zu ermöglichen.

Ich habe wirklich seeehr sehr (!) viel die Suchfunktion bemüht und spiele seit mehr als drei Tagen nur noch mit Makros rum, aber ich verrennen mich mittlerweile in dem Haufen halbfertigen Skripts und nun ist ja meine DB eh ganz kaputt...

Könnte einer von euch das kurz realisieren und erneut hochladen?
Ich würde mich SEHR darüber freuen, wirkich!!!!

Lieben Dank

Manuel
Dateianhänge
TestDB.odb
(11.22 KiB) 141-mal heruntergeladen
Systeminfos:
OOo 3.2.0, HSQL, Windows 7 (32bit)
ddraht
***
Beiträge: 60
Registriert: Di, 06.04.2010 16:35
Wohnort: Altenberge

Re: Da DB zerstört, Hilfe gesucht...

Beitrag von ddraht »

Hallo hobby,

hiermit kannst du den Schreibschutz ein/ausschalten, den Tipp habe ich von dpunch
viewtopic.php?f=8&t=37963

Sub SchreibschutzMainForm

oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0) 'Formular
oForm.AllowDeletes = NOT oForm.AllowDeletes 'löschen
oForm.AllowInserts = NOT oForm.AllowInserts 'hinzufügen
oForm.AllowUpdates = NOT oForm.AllowUpdates 'ändern
oForm.reload

End Sub

ddraht
MySQL 5.5.9
Oo 3.3.0, Build 9567
Mac os x 10.7.2
hobby
*
Beiträge: 13
Registriert: Sa, 01.05.2010 19:11

Re: Da DB zerstört, Hilfe gesucht...

Beitrag von hobby »

Hallo ddraht,

vielen Dank für den Hinweis!

Nur eine Frage: Sobald ich auf den Button klicke kann ich auch keinen Datensatz aus der Listbox auswählen, da dieses nun auch gesperrt wurde.
Nun dachte ich mir, man könne dem vielleicht entgehen, wenn man ein zweites Formular einfügt (jedoch mit derselben Tabelle wir das MainForm verknüpft) und dann im Makro zum Datensatz-asuwählen nicht wie folgt das Formular ermittelt

Code: Alles auswählen

 oForm = ThisComponent.drawpage.forms.getbyindex(0)
sondern das zweite Formular. Kannst du mir das noch verraten bzw. ist mein Weg zum kompliziert /falsch gedacht? Ich habe es mal wie folgt probiert, jedoch ohne Erfolg:

Code: Alles auswählen

 oForm = ThisComponent.drawpage.forms.getbyindex(1)
Und: Da der Button ja wie ein Switch / Taster funktioniert, wäre es vielleicht möglich den Text des Buttons zu ändern bzw. ein kleines Bild? Bspw. ein geöffnetes bzw. geschlossenes Schloß etc.?

Vielen herzlichen Dank!!!

PS.: Wg der Schreibschutz-Sache:
1) Nach anklicken springt mein Formular automatisch auf den ersten Listeneintrag zurück. Weiß jemand warum?
2) Ich habe das Forum hier nach "Trigger","Switch","Umschalt" durchsucht, leider ohne Erfolg:
Wie kann ich nicht nur die Schreibrechte switchen, sondern auch den Text, also das Label?
So, wie folgt, geht es schon einmal nicht...
:-(

Code: Alles auswählen

Sub SchreibschutzMainForm
oDoc = thisComponent
oForm = oDoc.Drawpage.Forms(0) 'Formular
Button = oForm.getByName("PushButton") 'Button
AUF = Button.Label = "Geoeffnet"
ZU = Button.Label = "Schreibschutz"
AUF = ZU
oForm.AllowDeletes = NOT oForm.AllowDeletes 'löschen
oForm.AllowInserts = NOT oForm.AllowInserts 'hinzufügen
oForm.AllowUpdates = NOT oForm.AllowUpdates 'ändern
oForm.reload
End Sub
Systeminfos:
OOo 3.2.0, HSQL, Windows 7 (32bit)
bofh
Beiträge: 5
Registriert: Sa, 01.05.2010 01:03

Re: Da DB zerstört, Hilfe gesucht...

Beitrag von bofh »

Ahm ich weill ja nicht unhöflich wirken aber gehts noch?

Was sollen wir denn noch in deinem Projekt realisieren ? *g*
Na komm im ernst. Wenn du Lösungsmöglichkeiten suchst (welche eigentlich ganz einfach selbst zu mahen wären) dann können wir dich auf die richtige spur bringen aber realisieren tus doch bitte selbst

Hinzukommt das das gar nicht so trivial ist bzw sein kann je nach anforderung.

Wenns nur um ein simples entsperren (ohne passwort oder credentials ist) kannst du relativ leicht lösen.

erstens eine formularweite boolean variable die gesperrt anzeigt ja/nein

jetzt musst du erstmal den button ein onklick event machen sowas nach dem motto
if sperrvar= true then sperrvar = false else sperrvar = true
- logisch damit wird mal der zustand der sperrvar jeweisl geswitcht
so als nächstes natürlich musst du die objekte aktualisieren. kannst du eigentlich gleich darunter machen
(sorry ich weis jetzt nicht den oosyntax
if sperrvar = true then button.property.visible = false

usw halt eben

ich würde eher nur die eingabe buttons etc abzw die editierfähigkeit der formcontrolls setzen.
Das hat 2 Vorteile. Wenn das Form entladen wird ist alles wieder so wie du es im onload spezifizierst
2: der user kann erst gar nichts in ein feld schreiben.

die andere methode oben hat den nachteil das felder editierbar bleiben und der user leicht vergessen kann zu entsperren
hobby
*
Beiträge: 13
Registriert: Sa, 01.05.2010 19:11

Re: Da DB zerstört, Hilfe gesucht...

Beitrag von hobby »

bofh hat geschrieben:Ahm ich weill ja nicht unhöflich wirken aber gehts noch?

Was sollen wir denn noch in deinem Projekt realisieren ? *g*
Na komm im ernst. Wenn du Lösungsmöglichkeiten suchst (welche eigentlich ganz einfach selbst zu mahen wären) dann können wir dich auf die richtige spur bringen aber realisieren tus doch bitte selbst
Hallo bofh, vielen Dank für deine Antwort!
Du versuchst wohl, deinem Nickname alle Ehre zu erweisen, hm?
Abgesehen von deiner Pseudocode-Hilfestellung (vielen Dank dafür!) wüsste ich nicht, wobei DU mir bei meinem "Projekt" geholfen hättest???

Aber egal. Ich bleibe besser konstruktiv; daher mein bisheriger Lösungsansatz:

Code: Alles auswählen

Sub SchreibschutzMainForm
	Dim oForm, oListbox As Object
	Dim LB_Item as integer
	oForm = ThisComponent.drawpage.forms.getbyindex(0)	
	oListbox = oForm.getByName("ListBox")
	LB_Item = oListbox.SelectedItems(0)
	MsgBox LB_Item, 0	
	oForm.absolute (LB_Item +1)
oForm.AllowDeletes = NOT oForm.AllowDeletes 'löschen
oForm.AllowInserts = NOT oForm.AllowInserts 'hinzufügen
oForm.AllowUpdates = NOT oForm.AllowUpdates 'ändern
oForm.reload
End Sub
Ich habe aus dem anderen Makro den oberen Teil kopiert, damit das "PushButton" Marko auch auf die Auswahl der ListBox zugreiffen kann und schließlich mittels

Code: Alles auswählen

oForm.absolute (LB_Item +1)
den entsprechenden Datensatz auswählen kann.
Darüberhinaus habe ich zu Testzwecken eine MsBox eingebaut, um mir die Auswahl bestätigen zu lassen:

Code: Alles auswählen

MsgBox LB_Item, 0
Klappt auch wunderbar.

Jedoch springt, nach dem Klick, dennoch das Formular auf den ersten Datensatz zurück. Kann es sein, dass diese Auswahl irgendwo irgendwie im Formular gespeichert werden muss, um den "Form.reload" zu überleben?

Ich habe auch schon das Forum durchsucht, jedoch ohne Erfolg. Der Beitrag hier brachte mich auf die Idee mit dem

Code: Alles auswählen

oForm.updateRow()
, jedoch auch ohne Erfolg...

So, könnte mich nun jemand auf den rechten Weg führen???
Systeminfos:
OOo 3.2.0, HSQL, Windows 7 (32bit)
Antworten