PDA

Vollständige Version anzeigen : sprachproblem


7Stefan
25.10.2003, 00:06
Hallo an alle die mir helfen wollen!

Also mein Problem ist folgendes. Ich arbeit hier in einem spanisch-sprachigen Land und hab ein deutsches Access-Kompendium vor mir liegen. Und jetzt bin ich verzweifelt am Suchen, wie man bei einer Bedingung den Befehl: "Meldung" uebersetzt, weiss nicht mal ob ich den auf spanisch oder englisch eingeben soll, aber hab schon alle mir denkbaren Varianten probiert.

und 2.:

wie realisiert man folgendes problem am besten:

Hab eine Abfrage erstellt: die mich automatisch nach zb dem Projekttitel fragt, und das ganze funktioniert auch. Aber bis jetzt steht in dem Pop-up nur var_projekt drinnen, und ich wuerde gerne eine ordentliche Anweisung bzw. Frage eingeben! Wie macht man das? Kann mir jemand weiterhelfen??

adios,

stefan

Nouba
25.10.2003, 00:17
zu 1) arbeitest Du in VBA oder verwendest Du Makros? Vielleicht kannst Du etwas spezifischer werden, wie was wo womit angestellt werden soll.

In VBA sollte man mit MsgBox eine Meldung ausgeben können. In Makros muß AFAIK der lokale Bezeichner verwendet werden.

zu 2) verstehe ich nicht, warum direkt mit Abfragen gearbeitet wird, über die keine Ereignisse zu erfahren sind. Nimm besser ein Formular in Datenblattansicht, das Dir der Assistent erstellen kann. Der Parameter ließe sich von einem Suchformular aus transferieren.

7Stefan
25.10.2003, 17:07
Original geschrieben von Nouba
zu 1) arbeitest Du in VBA oder verwendest Du Makros? Vielleicht kannst Du etwas spezifischer werden, wie was wo womit angestellt werden soll.

In VBA sollte man mit MsgBox eine Meldung ausgeben können. In Makros muß AFAIK der lokale Bezeichner verwendet werden.

zu 2) verstehe ich nicht, warum direkt mit Abfragen gearbeitet wird, über die keine Ereignisse zu erfahren sind. Nimm besser ein Formular in Datenblattansicht, das Dir der Assistent erstellen kann. Der Parameter ließe sich von einem Suchformular aus transferieren.

also ich arbeit eigentlich mit makros, da ich in vba nicht bis gar nicht bewandert bin. Aber wenns sein muss, und einfacher ist, will ichs auch dort probieren.

habs gestern noch mal mit einer inputbox versucht in vba, weil eine msgbox, meines wissens nach ja nur text ausgibt. und ich moecht ja, dass das jeweilige projekt da ein- und dann an die Abfrage weitergegeben wird. Damit mir diese dann alle Organisationen auflistet, die mit diesem Projekt zusammenarbeiten.

und nachdem ich soweit war, dass alle fehlermeldungen weg waren, fragte mich access nun 2 x. Das erste Mal von meiner neu erstellten inputbox. und das 2. x nach der Variable var_projekt, die in meiner Abfrage definiert ist.

Also wie kann ich das jetzt machen, dass er mich nur 1 x fragt. Kann man das pop-up der Variable unterdruecken od. vermeiden. Oder den Wert den ich in meine inputbox eingeb, direkt an die Variable uebergeben?

Bezueglich dem Vorschlag mit dem Formular, waer ich dir ueber eine genauere Beschreibung sehr dankbar!!

Eventuell koennt ich die Db auch hochladen, jedoch ist der Spass halt auf Spanisch. Sag mir Bescheid!

Lieben Gruss,
Stefan

7Stefan
25.10.2003, 17:13
also ich arbeit eigentlich mit makros, da ich in vba nicht bis gar nicht bewandert bin. Aber wenns sein muss, und einfacher ist, will ichs auch dort probieren.

habs gestern noch mal mit einer inputbox versucht in vba, weil eine msgbox, meines wissens nach ja nur text ausgibt. und ich moecht ja, dass das jeweilige projekt da ein- und dann an die Abfrage weitergegeben wird. Damit mir diese dann alle Organisationen auflistet, die mit diesem Projekt zusammenarbeiten.

und nachdem ich soweit war, dass alle fehlermeldungen weg waren, fragte mich access nun 2 x. Das erste Mal von meiner neu erstellten inputbox. und das 2. x nach der Variable var_projekt, die in meiner Abfrage definiert ist.

Also wie kann ich das jetzt machen, dass er mich nur 1 x fragt. Kann man das pop-up der Variable unterdruecken od. vermeiden. Oder den Wert den ich in meine inputbox eingeb, direkt an die Variable uebergeben?

Bezueglich dem Vorschlag mit dem Formular, waer ich dir ueber eine genauere Beschreibung sehr dankbar!!

Eventuell koennt ich die Db auch hochladen, jedoch ist der Spass halt auf Spanisch. Sag mir Bescheid!

Lieben Gruss,
Stefan

jadatcoder
25.10.2003, 19:40
Hallo,

ein kleines Beispiel wäre sicher nicht schlecht.

Du wirst wahrscheinlich zweimal gefragt weil:

1. Die Inputbox eine Eingabe von Dir haben möchte
2. Möglicherweise ein Kriterium in Deiner Abfrage steht,
mit dem die Abfrage nichts anfangen kann (weil z.B. kein Verweis
auf ein Formularfeld besteht).

Schau Dir Deine Abfrage nochmal genau an und lösche ggfls.
das Kriterium.

Wenn die Abfrage auf den, in der Inputbox eingegebenen Wert reagieren
soll, dann geht das IMHO nur per VBA (SQL Anweisung).

Wie (D)eine SQL Anweisung aussehen soll, kannst Du im Entwurf
Deiner Abfrage sehen.: Stell die Ansicht einfach mal auf SQL.

Generell:

Verwende, falls möglich nur ein Makro.
Das heißt 'AUTOEXEC' und läuft beim DB Start ab.
Damit startest Du Dein Startformular Deiner Anwendung.
Danach gibst Du dann die Kontrolle der Anwendung direkt
an VBA weiter (also Du rufst im 'AUTOEXEC' Makro andere (VBA) Funktionen auf, die für den Start erforderlich sind).

Bei MAKROs ist keine Fehlerbehandlung möglich.
Funktioniert Dein Makro mal nicht richtig (aus welchen Gründen
das auch immer passieren kann), stoppt die komplette Anwendung
und wird nach einer Fehlermeldung (die Du NICHT abfangen kannst)
beendet.

7Stefan
27.10.2003, 21:25
Hallo,

Werd jetzt einfach mal die Datei mitschicken, auf die Gefahr hin, dass es keiner versteht. Aber ich bin jederzeit fuer Erlaeuterungen sprachlicher Probleme bereit!

Wenn man auf den Button 'Proyektos de la misma region' klickt, oeffnet sich zuerst, meine input-box (so wie ich das moechte) und dann folgt dem ganzen auch noch die Variable, die wie ihr richtig erkannt habt nicht definiert ist. Wobei ich dies mehr oder weniger absichtlich gemacht hab, um nicht fuer jedes Projekt eine eigene Abfrage schreiben zu muessen. Vielleicht ist das fuer euch jetzt laecherlich, aber ich wusste keine bessere option. und so war es fuer mich eine passende moeglichkeit, das jeweils gewuenschte projekt einzugeben, mit nur einer Abfrage.

Bin aber fuer Verbesserungen, jeglicher Art gerne zu haben!!! Aber vor allem moecht ich dieses Problem erst geloest haben.

Sprich, ich wuerd mich ueber eine Beschreibung, was IMHO ist, und wie man das macht, dass es auf meine Eingabe in die input-box reagiert!

oder @Vorschlag von nouba, wie das mit der Version des Formulars (Suchformulars) funktionieren wuerd!

Dank schon im Voraus,

Stefan

Johnny Loser
27.10.2003, 21:41
Ich hab's mal etwas abgeändert.

Ist es das, was Du meinst?

(Aufruf über Funktion im modul)

Nouba
27.10.2003, 22:01
Hallo,

ich habe mal für die Abfrage mismaregion ein Formular erstellt. Im Kombifeld kann der Parameter eingestellt werden.

7Stefan
29.10.2003, 23:00
Vielen Dank an Euch beide!

Beide Loesungen funktionieren einwandfrei, wobei die von Johnny Loser exakt der entspricht, wie ich mir das vorgestellt habe. Soviel mal zum Lob an Euch Beide!

Jetzt meine Fragen:

@Johnny Loser: kannst du mir vielleicht erklaeren, welche schritte du gemacht hast, um das hinzukriegen, weil ich das ganze auch noch mit, "mismocampo"und"mismoproyecto" so machen moecht.

liebe gruesse und ein grosses Danke,
Stefan

Johnny Loser
29.10.2003, 23:36
Hi Stefan,

zuerst habe ich die InputBox-Eingabe im Button-Ereignis herausgenommen, da sie sich für diese Zwecke hier nicht eignet.

Private Sub Comando10_Click()
DoCmd.OpenQuery "mismaregion"
End Sub
In einem Modul habe ich eine Funktion geschrieben, welche diegleiche InputBox aufruft und den eingegebenen Wert zurückgibt:

Public Function fncGetRegio() As String
fncGetRegio = InputBox("Escribe el nombre de la región que quiere ver!", "programa")
End Function
Das Kriterium in der Abfrage habe ich durch diese Funktion ersetzt:

Wie "*" & fncgetregio() & "*"
Beim Öffnen der Abfrage wird nun nur die Funktion aufgerufen, und der in der Inputbox eingegebene Wert als Kriterium der Abfrage übergeben.

7Stefan
30.10.2003, 02:45
Hey Johnny Loser,

Vielen Dank fuer die schoene Erklaerung, habs durch einfaches copy&paste und ein bisschen umschreiben auch schon fuer die anderen hinbekommen.

Aber jetzt werd ich glaub ich groessenwahnsinnig. Sag(t) mir wenns zuviel wird!

Das alles ist schon nahezu perfekt! Aber wie mach ich es, dass wenn man auf den Cancel-Button drueckt, die abfrage auch wirklich gecancelt wird, und nicht ausgefuehrt, und alles anzeigt.

Und dann stell ich noch ganz allgemein, die Frage in den Raum, ob mir jemand sagen kann, was man noch besser/schoener machen kann! Und wie!

Ein grosses Danke aber nochmals dir Johnny Loser!!!!!!!!
Hast mir das Leben gerettet!

Johnny Loser
30.10.2003, 08:47
Hi Stefan,

dann mal so'n Tip von mir. (andere mögen das anders sehen...)

Meine Philosophie: Tabellen und Abfragen dienen als Basis für Formulare & Berichte und sollten, außer für den Administrator, für niemanden sichtbar sein.

Meine damit, daß es sinnvoller ist, ein Endlosformular auf Basis der Abfrage zu erstellen (Auto-Formular: tabellarisch) und anstatt mit OpenQuery die Abfrage, mit OpenForm das Formular zu öffnen. DIes hat den Vorteil, daß Du dem Formular eine WHERE-Klausel mit übergeben kannst, die Du DIr aus dem Wert der InputBox zusammenbaust.

Ob das Formular geöffnet wird oder nicht, kannst Du vorher prüfen, in etwa so:

Sub btRegio_Click()
Dim strKrit As Variant
strKrit = InputBox("...Dein Text...")
If strKrit = vbCancel Then
Exit Sub
End If
Dim rs As Recordset
Set rs = CurrentDb.OpenRecordset("Hier das SQL-Statement Deiner Abfrage")
If rs.RecordCount = 0 Then
MsgBox "Keine Daten vorhanden"
rs.Close
Exit SUb
Else
rs.Close
DoCmd.OpenForm "DeinEndlosformuar", , , "[regio] Like '*" & strKrit & "*'"
End If
End Sub
Falls Du nicht damit klarkommst, frag noch mal nach....

7Stefan
03.11.2003, 23:20
das mit dem endlosformular werd ich vielleicht in der naechsten version bringen. aber kann man da drinnen dann auch den auswahlbasierten filter anwenden, so wie in der tabellenansicht?

andere Frage:

was ich eigentlich wissen wollte:

bei dem Button: Proyectos de la misma region sowie den 2 anderen, wenn man draufklickt und die inputbox popt, und man moechte dann canceln ist das leider nicht moeglich. er oeffnet die tabellenansicht auf jeden fall, egal ob man ok, oder cancel sagt. Hab gelesen, dass man das ev. mit rollback loesen koennte, hab aber selbst, unschuldig wie ich bin, keinen Plan davon. Aber fuer euch ist das sicher ein Kinderspiel!! Oder irgendeine andere Loesung, die das realisiert.

Thanx
Stefan

Johnny Loser
04.11.2003, 01:37
Hi Stefan,

vorweg, Du kannst auch im Formular den auswahlbasierten Filter anwenden.

Die Problematik einer InputBox besteht darin, daß beim Abbrechen eine Null-Zeichenfolge ("") zurückgegeben wird. Bei OK ohne Text allerdings auch.

Diese könntest Du natürlich abfangen, sobald der User allerdings bewußt Eingabe drückt, weil er alle Daten sehen will, würde auch nichts angezeigt.

Ich hab's Dir nochmals als Beispiel angefügt...