EOF ? - Menüzeile

Hallo Zusammen,
ich hätte zwei Fragen:

  1. Bei dem folgenden Programteil bekomme ich die folgene Fehlermeldung:
    ***************************************
    Laufzeitfehler ‚302‘
    Entweder EOF oder BOF ist True, oder der aktuelle Datensatz wurde gelöscht. Der angeforderte Datensatz benötigt einen aktuellen Datensatz.
    **************************************
    Es existieren bei diesem Fall 2 Datensätze. Hier ist das Programmteil:

Set rstvorveran1 = New ADODB.Recordset
rstvorveran1.CursorType = adOpenKeyset
rstvorveran1.LockType = adLockPessimistic

zahl = 1 ’ Variable initialisieren.
satz = Null ’ Fels initialisieren
While zahl

Hallo Rezaei.

zu Frage 1:
Ich habe das Gefühl, das irgendwas mit „zahl“ und „zaehler“ nicht stimmt.

zu Frage 2:
Definiere eine Prozedur, die beim Starten der Anwendung aufgerufen wird und schreibe dort einen Select-Case-Block hinein. Damit könntest Du alle Usernamen abfragen und je nach Übereinstimmung die entsprechenden Menü-Punkte auf Enabled=True oder Enabled=False stellen.

Viele Grüße
Carsten

Hi Carsten,
danke für Deine Antwort, aber:
zu 1) Mit Zahl und Zaehlet ist ja alles richtig. Anscheind geht es aber mit rownum nicht. Bin noch dabei.

zu 2) Das war genau meine Frage. Wie kann ich einen Menüpunkt ansprechen. Bei einem Feld ist es so: Formularname.Feldname.Enable = True, aber wie ist bei einem Menüpunkt?

Gruß

Rezaei

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo Rezaei.

zu 1) Mit Zahl und Zaehlet ist ja alles richtig. Anscheind
geht es aber mit rownum nicht. Bin noch dabei.

Keinen blassen Schimmer bis jetzt :frowning:

zu 2) Das war genau meine Frage. Wie kann ich einen Menüpunkt
ansprechen. Bei einem Feld ist es so:
Formularname.Feldname.Enable = True, aber wie ist bei einem
Menüpunkt?

Das Prinzip ist genauso: Formularname.Menüname.Enabled = False/True
Oder bist du in Excel-VBA?

Viele Grüße
Carsten

Hi,
nein, ich arbeite mit VB für Auto-CAD. Wsa ich mit Menüzeile gemeint habe, kann man nicht so ansprechen, wie Du mir geschrieben hast. Es geht nicht um ein Button, den man so ansprechen kann, sondern geht es um eine Menüzeile.
Bespiel:
Menüname: cust
Menüpunkte: Datei und Bearbeiten
Untermenüpunkte: UNter Datei: Öffnen und Schliessen
Unter Bearbeiten: Suchen und Ersetzen

Ich möchte Beipielweise den UNtermenüpunkt Suchen und Ersetzen für manche User deaktivieren. Die Menüzeile ist nicht zu einem bestimmten Formular zugeordnet, daher kann ich sie nicht über den Formularname ansprechen.

Übrigens weisst Du wie man einen Zeilenumbruch erzeugen kann. Ich möchte in einem Feld über eine Länge von 40 Zeichen auf die nächste Zeile springen. Ich kenne von anderen Sprachen das Kommando newline, aber in VB habe ich noch nichts gefunden??

Gruß

R.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Übrigens weisst Du wie man einen Zeilenumbruch erzeugen kann.
Ich möchte in einem Feld über eine Länge von 40 Zeichen auf
die nächste Zeile springen. Ich kenne von anderen Sprachen das
Kommando newline, aber in VB habe ich noch nichts gefunden??

das geht, indem Du das Zeichen vbCrLf einfügst. Etwa so …

Text1.Text = Text1.Text & vbCrLf & "Test"

Das erzeugt einen ‚Zeilenvorschub‘ und schreibt ‚Test‘ in die nächste Zeile.

Gruß, Rainer

Guten morgen,
danke für Deine Antwort. Ich erkläre vieleicht den Fall noch genauer. Ich habe ein Feld und das heißt „Firma“. Dies Feld wird in einem Formular angezeigt. Ich möchte das Feld scrollen, wenn mehr als sichtbares Teil in dem Feld Texte vorhanden ist. Bespieleweise ist mei Text 300 Zeichen lang und ich sehe nur 40 Zeichen in meinem Feld. Ich möchte, daß automatisch mein Scroll-Fnster angezeigt wird, wenn ich mehr Texte habe, daher will ich versuchen einen Zeilenumbruch zu erzeugen, wenn ich mehr als 40 Zeichen in dem Feld habe. So erscheint dann mein automatisches Scroll-Teil „vertikal“ auf der Maske. Zuerst wollte ich mein Scroll-Leiste Vertikal anzeigen, aber die Scrollleiste ist noch höher als das Feld und überdeckt den Inhalt meines Feldes und ich mußte mein Feld noch höher definieren und das sieht nicht gut aus, weil alles andere Felder schmäler sind. Das ist genau mein Problem, daher kam ich auf die Idee mit „Zeilenumbruch“.

Gruß

Rezaei

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Guten Morgen,

danke für Deine Antwort. Ich erkläre vieleicht den Fall noch
genauer. Ich habe ein Feld und das heißt „Firma“. Dies Feld
wird in einem Formular angezeigt.

also der Inhalt eines Feldes einer Datenbank, richtig? Was für ein Steuerelement verwendest Du für die Anzeige?

Ich möchte das Feld
scrollen, wenn mehr als sichtbares Teil in dem Feld Texte
vorhanden ist. Bespieleweise ist mein Text 300 Zeichen lang und
ich sehe nur 40 Zeichen in meinem Feld. Ich möchte, daß
automatisch mein Scroll-Fnster angezeigt wird, wenn ich mehr
Texte habe, daher will ich versuchen einen Zeilenumbruch zu
erzeugen, wenn ich mehr als 40 Zeichen in dem Feld habe.

hmmm. Warum willst Du dann Linefeeds einfügen? Sag dem Steuerelment doch, daß Du einen Zeilenumbruch am Fenster möchtest.

So
erscheint dann mein automatisches Scroll-Teil „vertikal“ auf
der Maske. Zuerst wollte ich mein Scroll-Leiste Vertikal
anzeigen, aber die Scrollleiste ist noch höher als das Feld
und überdeckt den Inhalt meines Feldes und ich mußte mein Feld
noch höher definieren und das sieht nicht gut aus, weil alles
andere Felder schmäler sind. Das ist genau mein Problem, daher
kam ich auf die Idee mit „Zeilenumbruch“.

Das verstehe ich jetzt nicht. Damit Du scrollen kannst, brauchst Du doch auch wieder einen Scrollbalken. Oder willst Du auf Scrollbalken ganz verzichten, das Feld editierbar halten und mit dem Cursor scrollen?

Das spielt für das Problem keine Rolle. Ist das ein Textfeld? Stell in den Eigenschaften erst mal nur ‚Wordwrap‘ auf ‚True‘ und sieh Dir das an. Vermutlich ist Dein problem dann schon gelöst, wenn ich Dich richtig verstanden habe.

Gruß, Rainer

Hi,
ja, ich habe ein TextBox. Mein Wordwrap ist auf True gesetzt. Es gibt eine Eigenschaft, die heißet: Bildlauf: 0 - frmScrollBarsvertiake oder …Horizental oder None.
Ich frage ab, ist der Inhalt meines Textes größer als 40 Zeichen, setze ich die Eigentschaft vom Bildlauf auf frmScrollBarsVertikal, aber obwohl ich mehr als 40 Zeichen im Feld habe, erscheint mein vertikales Scroolbares nicht, daher dachte ich versuche ich über einen Zeilenbruch. Aber wenn ich horizentale Scrollbar nutze, funktioniert, aber die Scrollbars-Leiste überdeckt mein Feld.
Im Programm sieht es so aus:

if len(rstliste!firma) > 40 then
formularfirma.firma.scrollBars = frmScrollBarsVertikal
formularfirma.firma.setfocus
end if:

Inhalt rstliste!firma ist aus der Datenbank. Ich arbeite mit Auto-CAD-VB und Oracle.

Gruß

R.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,

ja, ich habe ein TextBox. Mein Wordwrap ist auf True gesetzt.
Es gibt eine Eigenschaft, die heißet: Bildlauf: 0 -
frmScrollBarsvertiake oder …Horizental oder None.
Ich frage ab, ist der Inhalt meines Textes größer als 40
Zeichen, setze ich die Eigentschaft vom Bildlauf auf
frmScrollBarsVertikal, aber obwohl ich mehr als 40 Zeichen im
Feld habe, erscheint mein vertikales Scroolbares nicht, daher
dachte ich versuche ich über einen Zeilenbruch. Aber wenn ich
horizentale Scrollbar nutze, funktioniert, aber die
Scrollbars-Leiste überdeckt mein Feld.

ja, wenn Du den horizontalen Scrollbar nutzt, wird Wordwrap wieder abgeschaltet, brauchst Du dann ja nicht. Dein Vertikaler Scrollbar erscheint vermutlich erst, wenn das Feld voll ist und es etwas zu scrollen gibt.

Im Programm sieht es so aus:

if len(rstliste!firma) > 40 then
formularfirma.firma.scrollBars = frmScrollBarsVertikal
formularfirma.firma.setfocus
end if:

ja das sollte richtig sein … wenn man das zur Laufzeit umstellen darf. Das kann ich im Moment nicht ausprobieren.

Inhalt rstliste!firma ist aus der Datenbank. Ich arbeite mit
Auto-CAD-VB und Oracle.

Ich weiß, das ist das Problem, weshalb ich Dir nur bei so einfachen Problemchen wie diesem hier helfen kann. Ich kenne weder Auto-Cad noch Oracle. :smile:

Bevor Du den Inhalt der Textfelder änderst, wie kommt der Text da rein? Ist das Feld direkt mit der Datenbank verbunden? Darfst Du da überhaupt am Text etwas ändern? Unter Umständen führt das zu Fehlern.

Gruß, Rainer

Hi,
Ich lese von einer Tabelle in Oracle-Datenbank und schreibe in das Feld meines Formulares, indem ich einfach schreibe:
Feldname.value = Feldinhalt der Tabelle (Verweis.Feldname)
Das ist kein Problem. Ändern kann ich auch ohne Probleme, den es sich um einen normalen Text in einem TextBox handelt.

Aber leider erscheint das vertikale ScrooBars auch nicht, wenn das sictbares Teil des TextBox-Feldes schon voll ist. Vieleicht hat es damit tz tun, das das sichtbares Teil nur voll ist und nicht das komp. Feld. Das Problem ist es, ich möchte meine Feldbereite nicht noch kürzen und man sieht nur ein Teil des Feldes (Sichtbares) Ich dachte, ich frage nach der Länge des Textes und schlate dann mein ScrollBars an, aber das geht auch nicht.
Auf jeden Fall liegt es daran, daß das Feld nicht Voll ausgefüllt ist, denn ich sehe nur ein Teil. (sichtbar). Weß ich nicht, was ich bei so einem Fall machen. Ich kann auch nicht nach sichtbarem teil fragen, oder?
Beispiel: Sichtbar: 40 Zeichen
Feldbereite: 300 Zeichen
Ich möchte nach 40 Länge mein ScrollBar-Vertikal anschalten.

Gruß

Gruß

Rezaei

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hi,
ich glaube, ich habe die Lösung. Es gibt die Einstellung „Multiline“. Diese muß man auf True setzen und dann erschein die vert. ScrollBars, wenn der Inhalt des Feldes größer ist als was man im Feld siehr. Es wird auch eine richtiges Zeilenumbruch gemacht. (automatisch). Man Springt aber ganz am Ende des Textes. Muß sehen, wie ich zu dem Anfang des Textes komme.

Gruß

R.

[Bei dieser Antwort wurde das Vollzitat nachträglich automatisiert entfernt]

Hallo,

Ich lese von einer Tabelle in Oracle-Datenbank und schreibe in
das Feld meines Formulares, indem ich einfach schreibe:
Feldname.value = Feldinhalt der Tabelle (Verweis.Feldname)
Das ist kein Problem. Ändern kann ich auch ohne Probleme, den
es sich um einen normalen Text in einem TextBox handelt.

gut.

Aber leider erscheint das vertikale ScrooBars auch nicht, wenn
das sictbares Teil des TextBox-Feldes schon voll ist.
Vieleicht hat es damit zu tun, das das sichtbares Teil nur
voll ist und nicht das komp. Feld.

Das kann ich mir nicht gut vorstellen. Wenn ich für mein Textfeld den vertikalen Scrollbar einstelle, ist der immer da. Der kommt nicht erst, wenn das Feld voll ist. Zur Laufzeit …

Text1.ScrollBars = vbVertical

… geht nicht! Das liefert einen Fehler, diese Eigenschaft ist zur Laufzeit schreibgeschützt.
Hast du in der Prozedur eventuell ein onError? Dann würdest Du den Fehler u.U. nicht bemerken und Dich windern, daß der Befehl nicht ausgeführt wird.

Das Problem ist es, ich
möchte meine Feldbereite nicht noch kürzen und man sieht nur
ein Teil des Feldes (Sichtbares) Ich dachte, ich frage nach
der Länge des Textes und schlate dann mein ScrollBars an, aber
das geht auch nicht.

Ja. Bei mir funktioniert das auch nicht, das kann mein VB zur Laufzeit nicht, da muß ich mich vorher entscheiden.

Auf jeden Fall liegt es daran, daß das Feld nicht Voll
ausgefüllt ist, denn ich sehe nur ein Teil. (sichtbar). Weß
ich nicht, was ich bei so einem Fall machen. Ich kann auch
nicht nach sichtbarem teil fragen, oder?
Beispiel: Sichtbar: 40 Zeichen
Feldbereite: 300 Zeichen
Ich möchte nach 40 Länge mein ScrollBar-Vertikal anschalten.

ich müßte den Scrollbar immer an lassen. Zuschalten geht nicht. Keine Ahnung, ob das bei Deiner Version anders ist, würde mich aber wundern.

Gruß, Rainer

Hi,

ich glaube, ich habe die Lösung. Es gibt die Einstellung
„Multiline“. Diese muß man auf True setzen

da bin ich jetzt nicht drauf gekommen, daß Du die noch auf alse haben könntest …

und dann erschein
die vert. ScrollBars, wenn der Inhalt des Feldes größer ist
als was man im Feld siehr. Es wird auch eine richtiges
Zeilenumbruch gemacht. (automatisch). Man Springt aber ganz am
Ende des Textes. Muß sehen, wie ich zu dem Anfang des Textes
komme.

Das ist wieder leicht. Beispiel …

Text1.SelStart = 20

Gruß, Rainer