Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread Robert Großkopf
Hallo Winfroed,
>
> Wert des ersten Eintrags holen
> oListBox = DlgFormDB.getControl(ListBoxName)
> sFirstItem = oListBox.getItem(0)
> [aus: FormWizard]
>
> Listbox füllen
> oListBox.addItem( "a", 0 )
>
Leider nicht. Ich habe einen neuen Wert über ein Textfeld in die Datenbank 
eingegeben. Die Listbox, die aus der Datenbank ihre Werte erhält, wird nach 
der Eingabe aktualisiert. Jetzt möchte ich erreichen, dass die Listbox auch 
gleich auf den neu eingegebenen Wert springt.

oListBox.SelectItem("Test2",True)

funktioniert bei mir nicht.

Im Endeffekt will ich also im Idealfall eine ComboBox haben, deren 
Auswahlfelder aber ergänzt werden, wenn das gewünschte nicht dabei ist. Die 
Ergänzungen sollen in die Datenbank geschrieben werden, das damit verknüpfte 
ID-Feld in die Tabelle, in der die ListBox eigentlich steht.
>
>
> Tipp: in der Bibliothek "Tools" sind viele Hilfsfunktionen
> (=Beispiele) für die Arbeit mit Listboxen
>
> Tipp:
> http://extensions.services.openoffice.org/project/OOoBTL2
> Gibt alle vorhandenen BASIC-Module aus allen installierten
> Bibliotheken in ein Writer-Dokument aus.
>
> Hilft beim Lesen :-)
>
> Generiert aus dem Text der hier installierten Basic-Module ein etwa
> 800 Seiten Writer­-Dokument in ca. 4 Sekunden***; inkl.
> Inhaltsverzeichnis.
>
Den Tips werde ich nachgehen. Vielen Dank.

Gruß

Robert

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread Hasler Reto
Hallo Robert
>
> oListBox.SelectItem("Test2",True)
>
> funktioniert bei mir nicht.
>
> Im Endeffekt will ich also im Idealfall eine ComboBox haben, deren
> Auswahlfelder aber ergänzt werden, wenn das gewünschte nicht dabei ist. Die
> Ergänzungen sollen in die Datenbank geschrieben werden, das damit
> verknüpfte ID-Feld in die Tabelle, in der die ListBox eigentlich steht.
>

Leider habe ich aus deiner Schilderung exakt schliessen können, ob du ein 
Dialog oder ein Formular zum eingeben der Daten benutzt. 

1. Wenn du einen Dialog benutzt (was ich eher auschliesse, da du von wenig 
Makrokenntnissen sprichst):

Einfach im Sub, der das ganze Speichert den Sub einfügen, der das ganze 
aktualisiert. Du kannst natürlich auch dem Feld, wo neue Daten eingegeben 
werden, den Sub "Aktualisieren" nach der Eingabe zuweisen. Dazu mit der 
Rechten Maustaste auf das Feld klicken (da wo die neuen Daten eingegeben 
werden)  -> Eingenschaften -> Ereignisse -> Text modifiziert -> Zuweisen. 
Dann den Sub, denn du gemacht hast auswählen.

2. Wenn du ein Formular benutzt hast, sollte eigentlich das gleiche gehen wie 
beim Dialog. Ich vermute zwar dass du mit einem Formular arbeitest, muss dir 
aber gestehen dass ich selber mit Dialogen arbeite. Zwar muss man dort alle 
Funktionen für die Datenbank selber schreiben, dafür ist der Lerneffekt 
wesentlich grösser. 

Ich hoffe dir ein wenig geholfen zu haben, sonst meldest du dich einfach 
nochmals.



Gruss Reto

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread Robert Großkopf
Hallo Reto,
>
> 1. Wenn du einen Dialog benutzt (was ich eher auschliesse, da du von wenig
> Makrokenntnissen sprichst):
>
> Einfach im Sub, der das ganze Speichert den Sub einfügen, der das ganze
> aktualisiert. Du kannst natürlich auch dem Feld, wo neue Daten eingegeben
> werden, den Sub "Aktualisieren" nach der Eingabe zuweisen. Dazu mit der
> Rechten Maustaste auf das Feld klicken (da wo die neuen Daten eingegeben
> werden)  -> Eingenschaften -> Ereignisse -> Text modifiziert -> Zuweisen.
> Dann den Sub, denn du gemacht hast auswählen.

Das Speichern und aktualiereien schaffe ich ja - nur nicht das Umstellen der 
Listbox auf den 'richtigen' Datensatz. Siehe dazu unten.
>
> 2. Wenn du ein Formular benutzt hast, sollte eigentlich das gleiche gehen
> wie beim Dialog. Ich vermute zwar dass du mit einem Formular arbeitest,
> muss dir aber gestehen dass ich selber mit Dialogen arbeite. Zwar muss man
> dort alle Funktionen für die Datenbank selber schreiben, dafür ist der
> Lerneffekt wesentlich grösser.
>
Ja, ich arbeite mit Formularen. Es gibt ein Formularblatt, auf dem mehrere 
Formulare nebeneinander existieren. Das Ganze ergibt eine kleine 
Bibliotheksverwaltung.
In dem Hauptformular werden Kategorie, Ort usw. aus Listboxen ausgewählt, die 
Listen durch Datenbankabfragen erhalten. Fehlt ein Ort, so gebe ich diesen in 
einem Formular, das neben dem anderen liegt (kein Unterformular, aber auf 
demselben Blatt - für den Anwender nicht als 2. Formular sichtbar) in ein 
Textfeld ein. Ich speichere und aktualisiere den Inhalt der Listbox mit Hilfe 
eines Makros. In dem Textfeld steht jetzt z.B. "Düsseldorf" - auch nach der 
Speicherung, habe ich also nicht auf "neuer Datensatz" weitergeschaltet. In 
der Listbox ist jetzt auch "Düsseldorf" enthalten, aber leider wird es nicht 
sofort angezeigt. Stattdessen steht da noch "Dortmund", nachdem der Benutzer 
vorher gemerkt hat, dass eben "Düsseldorf" nicht in der Auswahl ist. Jetzt 
muss der Benutzer also wieder zur Listbox und die auf "Düsseldorf" umstellen. 
Und da fände ich es natürlich bedienungsfreundlicher, wenn eben durch das 
Makro auch direkt die Listbox auf "Düsseldorf" umgestellt würde. Und genau 
das schaffe ich nicht.

Gruß

Robert

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



AW: Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread [EMAIL PROTECTED]
Hallo Robert

Tut mir leid, habe wohl deine Frage falsch verstanden:

>Und da fände ich es natürlich bedienungsfreundlicher, wenn eben 
durch das 
>Makro auch direkt die Listbox auf "Düsseldorf" umgestellt würde. 
Und genau 
>das schaffe ich nicht.

Du must das die Listbox ansprechen. Du musst zuerst den im 
Formular, wo neue Datensätze erstellt werden können, die Eingabe 
erfassen und diesen Text dann im zweiten Formular aus der Listbox 
selektieren. (Vergiss nicht, bevor du diesen Skript ausführen kannst, 
muss du die Listbox aktualisieren, da sonst der Eintrag nicht 
gefunden werden kann.)

Sub aktualisieren
'Variablendeklaration:
Dim oDoc as Object  
'Enthält das Dokument
Dim oDraw as Object 
'Enthält die Drawpage
Dim oForms as Object'Alle 
Formulare der Drawpage
Dim oForm as Object 'Das 
Formular
Dim oElements as Object 'Das 
Steuerelement
Dim sEingabe as String  'Neu 
eingegebener Text
'Im Formular den Text auslesen, der neu eingegeben wurde.
oDoc = ThisComponent
oDraw = oDoc.drawpage
oForms = oDraw.getForms
oForm = oForms.GetByName("MainForm")
oElement = oForm.getByName("Textfield1")
sEingabe = oElement.Text
'Im zweiten Formular den Text eintragen.
oDoc = ThisComponent
oDraw = oDoc.drawpage
oForms = oDraw.getForms
oForm = oForms.GetByName("MainForm2")
oElement = oForm.getByName("ListBox1")
oElement.selectItem(sEingabe,True) 
End Sub

Am Besten du kopierst das ganze mal in dein Makro, dann kannst du 
es auch lesen (die farbliche Darstellung hilft dabei). 
Du musst natürlich MainForm, Textfield1,MainForm2,ListBox1 durch 
die entsprechenden Namen in deinem Formular (bzw. zwei Formularen) 
ersetzten.


So ich hoffe dir jetzt geholfen zu haben. Sollte es nicht klappen, 
so weisst du ja, wo du weiterfragen kannst.

Gruss Reto

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: AW: Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread Robert Großkopf
Hallo Reto,

vielen Dank für die Hilfe: Ich habe einmal vermerkt, bis wohin ich schon 
gekommen bin - und was einfach nur mit einer Fehlermeldung quittiert wird:
>
> Du must das die Listbox ansprechen. Du musst zuerst den im
> Formular, wo neue Datensätze erstellt werden können, die Eingabe
> erfassen und diesen Text dann im zweiten Formular aus der Listbox
> selektieren. (Vergiss nicht, bevor du diesen Skript ausführen kannst,
> muss du die Listbox aktualisieren, da sonst der Eintrag nicht
> gefunden werden kann.)
>
> Sub aktualisieren
> 'Variablendeklaration:
>   Dim oDoc as Object  
> 'Enthält das Dokument
>   Dim oDraw as Object 
> 'Enthält die Drawpage
>   Dim oForms as Object'Alle 
> Formulare der Drawpage
>   Dim oForm as Object 'Das 
> Formular
>   Dim oElements as Object 'Das 
> Steuerelement
>   Dim sEingabe as String  'Neu 
> eingegebener Text
> 'Im Formular den Text auslesen, der neu eingegeben wurde.
>   oDoc = ThisComponent
>   oDraw = oDoc.drawpage
>   oForms = oDraw.getForms
>   oForm = oForms.GetByName("MainForm")
>   oElement = oForm.getByName("Textfield1")
>   sEingabe = oElement.Text
> 'Im zweiten Formular den Text eintragen.
>   oDoc = ThisComponent
>   oDraw = oDoc.drawpage
>   oForms = oDraw.getForms
>   oForm = oForms.GetByName("MainForm2")
>   oElement = oForm.getByName("ListBox1")

Das Element ist in der Listbox, kann ich auswählen. Die Listbox kann ich auch 
ansprechen. Den Eingabestring kann ich auch mit einer Messagebox auf den 
Schirm holen. Den momentan angezeigten String der Listbox auch.
>   oElement.selectItem(sEingabe,True)

Aber genau an dieser Postition streikt Das Formular, wirft Base nur eine 
Methode aus, die nicht passt (ich habe im Augenblick Office bereits 
runtergefahren - aber setelectItem habe ich nach den Befehlen aus der Website 
von Michael Dannenhöfer versucht. Nur tut's das nicht. Anscheinend ist da ein 
Unterschied zwischen ListBoxen ohne und ListBoxen mit Datenbankanbindungen.

> End Sub
>
> Am Besten du kopierst das ganze mal in dein Makro, dann kannst du
> es auch lesen (die farbliche Darstellung hilft dabei).
> Du musst natürlich MainForm, Textfield1,MainForm2,ListBox1 durch
> die entsprechenden Namen in deinem Formular (bzw. zwei Formularen)
> ersetzten.

Klar, haben alle unterschiedliche Namen. Ich habe zwar mit OpenOffice-Basic 
noch nicht so viel zu tun gehabt, aber schon viele Webformulare für 
MySQL-Datenbanken erstellt - und da ein Feld nach der ID zu suchen, wenn es 
doch viel besser benannt werden kann, ist ja auch ein Glücksgeschäft.

Ich werd's morgen noch einmal mit Deinem Original versuchen - rechne aber mit 
demselben Scheitern, da auch Xray den Befehl selectItem bei der Listbox gar 
nicht als verfügbar auflistet.

Trotzdem vielen Dank für die Hilfe.

Gruß

Robert

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: AW: Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-30 Thread Hasler Reto
Hallo Robert

> > oElement.selectItem(sEingabe,True)
>
> Aber genau an dieser Postition streikt Das Formular, wirft Base nur eine
> Methode aus, die nicht passt (ich habe im Augenblick Office bereits
> runtergefahren - aber setelectItem habe ich nach den Befehlen aus der
> Website von Michael Dannenhöfer versucht. Nur tut's das nicht. Anscheinend
> ist da ein Unterschied zwischen ListBoxen ohne und ListBoxen mit
> Datenbankanbindungen.

Villeicht kannst du es auch mal mit selectItemsPos(ipos,True) versuchen. Du 
musst ipos durch einen Integer ersetzten, also einer Zahl. zb:

oElement.selectItemsPos(1,True)

Es ist mit klar dass du die Postion nicht weisst, aber es würde mich wunder 
nehmen, ob es so funktioniert. Wenn es auf diese Weise funktioniert müsste 
man eine Schleife basteln, die die Richtige Position ausgiebt. Aber auch 
dabei könnte ich dir behilflich sein.

Ich würde auf jeden Fall mal versuchen, das ganze so wie ich vorhin 
beschrieben habe, einzusetzten.

Gruss Reto

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: AW: Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-31 Thread Hasler Reto
> Hallo Reto,
>
> > Villeicht kannst du es auch mal mit selectItemsPos(ipos,True) versuchen.
> > Du musst ipos durch einen Integer ersetzten, also einer Zahl. zb:
> >
> > oElement.selectItemsPos(1,True)
>
> Das habe ich sofort probiert. Neuen Ort "Köln" eingegeben, Makro läuft bis
> zu selectItemsPos(1,True)
> bzw
> selectItemPos(1,True)
> durch - dann die Meldung: "Eigenschaft oder Methode nicht gefunden"

Bist du dir sicher dass du das richtige Objekt ansprichst? Ich habe die 
Vermutung dass du ein Falsches Objekt versuchts zu verändern. zB ein Textfeld 
auf deinem Formular

> "Köln" ist in der Liste neu aufgetaucht, der Ort mit der ID 1 (die
> weitergegeben wird) ist belegt, falls das Ganze nach der Sortierung in der
> Listbox und nicht nach dem damit verknüpften Wert läuft: mehr als 1 Ort ist
> auch vorhanden - aber eben nichts.
>
Die eingegebene Nummer ist die Position in der Liste und hat mit der ID des 
Datensatzes nichts zu tun.

>Ich glaube, ich werde das einmal ohne Datenbankanbindung 
>probieren, um wenigstens zu sehen, ob es so funktioniert. Für mich ist das 
>dann zwar unbrauchbar, aber irgendwie finde ich auch dafür einen Workaround.

Naja unbrauchbar würde ich das ganze dann nicht nennen. Speichere doch mal 
eine Kopie des Formulars und fülle die Auswahlbox mit vorgeschriebenen werten 
(So dass sie nicht mehr mit der Datenbank in Verbindung stehen). Versuche 
dann mal ob du die Selektion per Makro ändern kannst. Solltest du so Erfolg 
haben, wirst du sicher den Fehler, der sich eingeschlichen hat, finden. 

Wenn es sich bei dieser Sache um keine geheime Sache handelt kannst du mir die 
Datei auch zusenden, ich würde mir das ganze gerne Mal anschauen. (Privat 
zusenden)

Gruss Reto

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]



Re: AW: Re: [de-users] Re: Listbox per Makro Wert zuweisen

2007-10-31 Thread Robert Großkopf
Hallo Reto,
>
> Villeicht kannst du es auch mal mit selectItemsPos(ipos,True) versuchen. Du
> musst ipos durch einen Integer ersetzten, also einer Zahl. zb:
>
>   oElement.selectItemsPos(1,True)
>
Das habe ich sofort probiert. Neuen Ort "Köln" eingegeben, Makro läuft bis zu 
selectItemsPos(1,True)
bzw
selectItemPos(1,True)
durch - dann die Meldung: "Eigenschaft oder Methode nicht gefunden"

"Köln" ist in der Liste neu aufgetaucht, der Ort mit der ID 1 (die 
weitergegeben wird) ist belegt, falls das Ganze nach der Sortierung in der 
Listbox und nicht nach dem damit verknüpften Wert läuft: mehr als 1 Ort ist 
auch vorhanden - aber eben nichts.

Irgendwo scheine ich mit den Makros sowieso auf Kriegsfuß zu stehen. Starte 
ich mein Formular, so gibt Base (bzw. das integrierte Writerformular) auch 
hin und wieder aus, dass ein Script nicht definiert ist - obwohl es im 
Dokument selbst liegt, aber eben vom Formular aus unerreichbar erscheint.

Jetzt gerade erscheint beim Aufruf von Xray (um die mit der ListBox 
verknüpften Methoden zu finden), dass die Funktion nicht definiert ist ...
Mir ist diese Makrowelt zu undurchschaubar.

Was ich genau weiß, als ich mit Xray die Methoden auflistete: selectItemPos 
und selectItem und wie sie alle so schön auf Michael Dannenhöfers Seite für 
Listboxen, werden von Xray nicht aufgelistet und werfen bei mir entsprechend 
nur Fehler auf. Ich glaube, ich werde das einmal ohne Datenbankanbindung 
probieren, um wenigstens zu sehen, ob es so funktioniert. Für mich ist das 
dann zwar unbrauchbar, aber irgendwie finde ich auch dafür einen Workaround.

Gruß

Robert

-
To unsubscribe, e-mail: [EMAIL PROTECTED]
For additional commands, e-mail: [EMAIL PROTECTED]