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

2007-10-31 Diskussionsfäden 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 Diskussionsfäden 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]



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

2007-10-30 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden 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 Diskussionsfäden [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 Diskussionsfäden 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 Diskussionsfäden 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]



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

2007-10-29 Diskussionsfäden Winfried Rohr
Robert,

was ist die Frage?

Wert des ersten Eintrags holen
oListBox = DlgFormDB.getControl(ListBoxName)
sFirstItem = oListBox.getItem(0)
[aus: FormWizard]

Listbox füllen
oListBox.addItem( a, 0 ) 

War die Antwort dabei?


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.

***Testmaschine:
http://www.re-solutions.de/ooo/test/20070801_ganymed.html


Cheers
Winfried
-- 

re-Solutions.de Software Test Engineering  Mainz Germany Europe
meine OOo Seiten: http://www.re-solutions.de/ooo/

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