German Neuling bei Basic4ppc - wollte mal "Hallo" sagen ...

JOTHA

Well-Known Member
Licensed User
Longtime User
... Ich bitte un Entschuldigung, Ich hab da irgendwo 'Mist' gemach.

Aber Hallo Klaus !
DU brauchst Dich bei mir doch nicht entschuldigen, im Gegenteil, ich muß mich bei Dir noch bedanken.

Gruß
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Hallo Klaus,

ich habe jetzt nach deiner Anleitung ...

Vorschlag zur Programmierung:
B4X:
Sub ButtonBeenden01_Click
  AppClose
End Sub

Sub ButtonBeenden02a_Click
  AppClose
End Sub

Sub ButtonBeenden02b_Click
  AppClose
End Sub
.
.
.
Sub ButtonBeenden31_Click
  AppClose
End Sub

ersetzen durch

B4X:
' In der App_Start Routine oder einer anderen Init Routine die ganzen ButtonClicks auf eine einzige Routine verzweigen
AddEvent("ButtonBeenden01",Click,"ButtonBeenden_Click")
AddEvent("ButtonBeenden02a",Click,"ButtonBeenden_Click")
AddEvent("ButtonBeenden02b",Click,"ButtonBeenden_Click")
.
.
.
AddEvent("ButtonBeenden31",Click,"ButtonBeenden_Click")


Sub ButtonBeenden_Click
  AppClose
End Sub

... den Code verändert. Ergebnis: Leider funktioniert es nicht.

Darüber hinaus habe ich noch ein weiteres Problem:

Anscheindend werden die Werte, wenn ich Sie ändere oder einen neuen Datensatz eingebe, in der Tabelle nicht korrekt gespeichert.

Ich habe den Code nochmals in der aktuellen Fassung angehängt ...

Gruß
 

klaus

Expert
Licensed User
Longtime User
Hallo JITHA,

Die Routine Sub ButtonBeenden_Click darf nicht hier sein

B4X:
  AddEvent("ButtonBeenden29",Click,"ButtonBeenden_Click")   
  AddEvent("ButtonBeenden31",Click,"ButtonBeenden_Click")   

  Sub ButtonBeenden_Click
    AppClose
  End Sub
End Sub

sondern so

B4X:
  AddEvent("ButtonBeenden29",Click,"ButtonBeenden_Click")   
  AddEvent("ButtonBeenden31",Click,"ButtonBeenden_Click")   

End Sub

Sub ButtonBeenden_Click
  AppClose
End Sub

Du hasttest die Sub ButtonBeenden_Click Routine in der AppStart Routine innen drin, das darf aber nicht sein.

Am Anfang deiner AppStart Routine rufst Du ButtonNeuenKundenAnlegen01_Click Routine auf, wenn mit JA antwortet versucht das Programm Werte in Zellen zu schreiben, bevor die Tabellencolonnen erstellt sind !?

B4X:
Sub App_Start
    Form01StartseiteUndMenue.Show
    ButtonNeuenKundenAnlegen01_Click 'Fragt gleich beim Start nach, ob ein neuer Kunde angelegt werden soll.
    WaitCursor (True)
    ErrorLabel(Err)

Die Tabelle muss ja erst erstellt sein bavor man sie füllen kann. Der Aufruf muss später erfolgen.

Grüsse.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
:signOops:

Danke Klaus,

ich baue das gleich mal um und probiere es ...

Ich melde mich dann wieder, ob es funzt.

Grüße
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Funzt leider nicht ...

Die Tabelle muss ja erst erstellt sein bavor man sie füllen kann. Der Aufruf muss später erfolgen.

Danke für diesen Hinweis (ist ja logisch). Ich habe die Zeile erst einmal deaktiviert und komme später darauf zurück, indem ich die Zeile einfach anderswo hinsetze, nachden die Spalten der Tabelle erstellt sind. So müsste dan das wohl klappen, oder?

Zu deiner anderen Anregung mit dem "Buttons alle in eine Routine schreiben":

Es funzt leider immer noch nicht.

Ich habe es so geändert, wie Du beschrieben hast (anbei der Code). Meine alten einzelnen Subs (Zeilen 1488 bis 1593) habe ich deaktiviert und deine Sub (Zeilen 242 bis 268) ist aktiviert.

Dazu habe ich die Sub

B4X:
Sub ButtonBeenden_Click
    AppClose
End Sub

extra in eine andere Zeile (504 bis 506) geschrieben. Wie gesagt: Es funzt leider nicht. Vielleicht ist doch ein Tippfehler drin?

Generell aber möchte ich noch einmal meine Frage wiederholen, ob es denn von der Geschwindigkeit später etwas bringt wenn man das so anwendet (weil dann weniger Zeilen im Code sind)?

Gruß
 

klaus

Expert
Licensed User
Longtime User
Hallo JOTHA,

Es ist auch normal dass es nicht funktioniert !
Denn Du hast eine Return Instruktion bevor Du die AddEvent Instruktionen erreichst. Das heisst dass das Programm nie dahin kommt, ausser wenn es einen Fehler gibt !
B4X:
    TableName.TableSort("Nachname ASC, Vorname ASC")   'Sortiert die Tabele nach den Nachnamen. (ASC = ascending | DSC = descending)
    WaitCursor (False)
    ShowRow
    [COLOR="Red"]Return[/COLOR]
    Err:
    Msgbox("Entweder gibt es einen Fehler beim Laden der Datenbank, oder eine Datenbank ist noch gar nicht vorhanden. Durch Anlegen eines neuen Kunden wird eine neue Kundendatenbank erstellt."," Hinweis",cMsgboxOk,cMsgboxHand)
'------------------------------------------------------
' Der "Beenden"-Button unten links
'------------------------------------------------------    
'In der App_Start Routine oder einer anderen Init Routine die ganzen ButtonClicks auf eine einzige Routine verzweigen (Tip von Klaus).
    AddEvent("ButtonBeenden01",Click,"ButtonBeenden_Click")
    AddEvent("ButtonBeenden02a",Click,"ButtonBeenden_Click")
    AddEvent("ButtonBeenden02b",Click,"ButtonBeenden_Click")

Auf Deine Frage ob es von der Geschwindigkeit etws bringt ?
Das Laden des Programms ist wahrscheinlich etwas kürzer. Ich glaube aber nicht dass es viel ausmacht. Aber der Quellcode ist übersichtlicher.

Grüsse.
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Es ist auch normal dass es nicht funktioniert !
Denn Du hast eine Return Instruktion bevor Du die AddEvent Instruktionen erreichst.
Vielen Dank Klaus !!!!!

So ist das eben, wenn ein Anfänger Code teilweise kopiert und die Anweisung "Return" falsch interpretiert.

Ich bin sehr froh, daß ich in einem so aktiven Forum unterstützt werde, und hoffe, daß ich davon später auch mal was an andere "zurückgeben" kann.

Also dann ändere ich das nochmals und hoffe es funzt dann ... (Schäm) :signOops:

DANKE!
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Feedback @ Klaus

:sign0060: ---> es funzt jetzt !!! :sign0060:

Liebe Grüße ...
 

JOTHA

Well-Known Member
Licensed User
Longtime User
Danke !

Hallo Klaus,

ich habe das Päckchen geöffnet. Du hast Dir ja ganz schön Arbeit gemacht.

Vielen Dank!

Ich werde das jetzt mal studieren und in den aktuellen Code einbauen. Direkt übernehmen geht nicht mehr, da ich selber schon einiges weiter umgestellt habe.

Du hast mir aber sehr geholfen, da ich das in Zukunft besser und übersichtlicher machen kann. :rolleyes:

Grüße ...
 
Top