Datenbankverbindung schliessen

Wie auf MySql und den ganzen Rest zugreifen ...

Datenbankverbindung schliessen

Beitragvon ralli » Mo 12. Sep 2011, 06:46

Wenn ich eine Datenbankverbindung mit der Eigenschaft close schliesse, bleibt die letzte Ansicht des Databrowsers und der einzelnen Datacontrols erhalten. Ist das richtig und bei Euch auch so? Von anderen Hochsprachen, wie Delphi, Lazarus kenne ich das so, das nach der Beendigung der Datenbankverbindung die angezeigten Daten in den Komponenten leer angezeigt werden. Das möchte ich mit Gambas auch so erreichen. Denn wenn sensible Daten auf dem Bildschirm sichtbar sind, und nicht für jedermann bestimmt, möchte ich mit einem Klick den von mir beschriebenen Zustand erreichen.
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Datenbankverbindung schliessen

Beitragvon yoda » Mo 12. Sep 2011, 17:46

Moin,

ich habe schon mit Datenbanken gearbeitet siehe mein TuxLog aber mit Databrowsers kann ich nicht wirklich etwas anfangen.

mfg Yoda
yoda
Site Admin
 
Beiträge: 423
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge

Re: Datenbankverbindung schliessen

Beitragvon ralli » Mo 12. Sep 2011, 18:36

Du hast aber schon bemerkt, das ich mich verschrieben habe und es Databrowser heissen muß, oder?
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Datenbankverbindung schliessen

Beitragvon tux_ » Mo 12. Sep 2011, 19:47

Hi,

ohne es probiert zu haben, vielleicht hilft ein DataSource.Update(), wobei ich denke, dass es da eher zu Problemen kommt, da die Connection geschlossen wurde, als dass es die Felder leert.
Man könnte es natürlich auch über die altbewährte Handarbeit versuchen:
Code: Alles auswählen
Public Sub CloseAndClear()
  Dim hObject As Object

  DataSource.Connection.Close()
  For Each hObject In DataSource.Children
    If Object.Type(hObject) Like "DataControl" Then
      hObject.Value = Null
    Endif
  Next
End


Das ist Code, von dem ich gerade vermutet habe, dass er funktionieren könnte, er sollte alle DataControls leeren.
Ich weiß nicht, ob er funktioniert, du solltest einfach ein wenig damit experimentieren, wenn dir selbst nichts einfällt.

MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05

Re: Datenbankverbindung schliessen

Beitragvon ralli » Di 13. Sep 2011, 05:19

Danke tux_ Du hast mir sehr geholfen. Das mit den DataControls funktionierte auf Anhieb, das Leeren des DataBrowser ging leider nur etwas tricky und dirty. Hier der Code:

Code: Alles auswählen
PUBLIC SUB Button2_Click()

  DIM hObject AS Object
 
  MDataBase.DBVerbindungSchliessen()
 
  FOR EACH hObject IN DataSource1.Children
 
  IF Object.Type(hObject) LIKE "DataControl" THEN
   
   hObject.Value = NULL
   
  ENDIF
   
  NEXT

MDataBase.OpenDB("sqlite3", "/home/ralph", "info", "", "", "", "telefon")

Abfrage.Text = "Nachname = '" "'"

DataSource1.Filter = Abfrage.Text

Abfrage.Text = ""

Abfrage.SetFocus

CATCH

  Message.Error(DConv(Error.Text))

END


Vielleicht hast Du noch eine Idee für den DataBrowser und es geht eleganter?
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Datenbankverbindung schliessen

Beitragvon Honsek » Di 13. Sep 2011, 08:40

Hallo,

ist der folgende Ausschnitt aus der Gambas-Hilfe ein Schritt zur Lösung?

DataSource.Cancel (gb.db.form)
SUB Cancel ( )
Cancel any current edition of child controls.


Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: Datenbankverbindung schliessen

Beitragvon ralli » Di 13. Sep 2011, 15:45

Danke Honsek für Deine Anregung. Im gleichen Zuge habe ich Gambas aktualisiert und bin von Debian Lenny auf Mint 9 Isadora umgestiegen. Aber dort lief es in der aktuelleren Version überhaupt nicht mehr richtig, der DataBrowser bekommt keinen Fokus und die Inhalte der DataControls werden erst angezeigt, wenn er den Fokus bekommt, indem ich den Datensatzzeiger durch eines der Bedienelemente wie den Next Button bewege. Jetzt bin ich wieder zu Debian Lenny zurück migriert, irgendwie scheint Gambas unter KDE 3.5.10 besser zu funktionieren... also bleibe ich dabei, neue Version neue Fehler?
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Datenbankverbindung schliessen

Beitragvon tux_ » Di 13. Sep 2011, 16:18

Hi,

dein Versuch, den DataBrowser zu leeren ist in der Tat äußerst "quick'n'dirty". In der Dokumentation findet sich die Eigenschaft DataBrowser.View. Dies ist ein TableView, das die Einträge darstellt und ein TableView hat eine Clear()-Methode:
DataBrowser.View.Clear()

sollte es tun.

MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05

Re: Datenbankverbindung schliessen

Beitragvon Honsek » Di 13. Sep 2011, 18:25

Guten Tag Tobias,

ja, Deine Antwort ist ok - sie gilt aber nur unter Gambas 3. Das sollte erwähnt werden!

Mit freundlichem Gruß

Honsek
---> Wenn Du eine gute Antwort erwartest, musst Du sehr gut fragen!
Benutzeravatar
Honsek
Foriker
 
Beiträge: 330
Registriert: Do 4. Okt 2007, 17:01

Re: Datenbankverbindung schliessen

Beitragvon ralli » Di 13. Sep 2011, 18:50

Ja ganz wohl ist mir dabei auch nicht, weil es nicht mein Programmierstil ist, aber manchmal heiligt der Zweck doch die Mittel.
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Datenbankverbindung schliessen

Beitragvon tux_ » Di 13. Sep 2011, 20:44

Hi,

ja, Deine Antwort ist ok - sie gilt aber nur unter Gambas 3. Das sollte erwähnt werden!


danke für den Hinweis! Ich schaue generell nur in der v3-Hilfe.
Unter Gambas2 heißt diese Eigenschaft DataBrowser.GridView, demzufolge also die Zeile:
DataBrowser.GridView.Clear()

MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!
tux_
Site Admin
 
Beiträge: 941
Registriert: Di 11. Nov 2008, 20:05

Re: Datenbankverbindung schliessen

Beitragvon ralli » Fr 16. Sep 2011, 07:11

So, die Geschichte mit dem Fokus hat sich aufgelöst, das passiert nur, wenn die KDE Komponente unter dem Gnome Desktop eingebunden ist. Mit der Datenbankprogrammierung bin ich durch. Gestern schaute ich mir noch die Layoutmöglichkeiten an. Ich hatte mal vor, meinen SQLiteMaker, den ich mit Lazarus und Objektpascal erstellte, auf Gambas zu portieren, aber ich will auch nicht das Rad neu erfinden, denn es gibt ja den Datenbankmanager, der ja bei Gambas bereits an Bord ist. Dann hatte ich die Idee, meinen Reportgenerator zur Verfügung zu stellen, der mit Hilfe der Freereport Komponente erstellt wurde, aber dann sah ich das in der kommenden Generation bereits ein DB Reportgenerator integriert ist. In diesem Zusammenhang möchte ich allen danken, aber im Besonderen flodder für das Projekt GamKuWa und auch Honsek, der mir ein Datenbankbeispiel mailte, so das meine Lernkurve steil nach oben ging und ich in zwei drei Tagen das umsetzen konnte, wofür ich ohne diese hilfreichen Geister sicher auch mehrere Tage oder Wochen benötigt hätte. Wir brauchen mehr praxisnahe Beipiele, denn mit Gambas läßt sich viel mehr realisieren, als am Anfang erahnt werden kann. :D
Gambas 3 - System: Fedora 16 mit XFCE Desktop - CPU: P4 3,0 - RAM: 2048 MB - Graka: Ati X700 mit 512 MB (Treiber Radeon) - HDD: 250 GB und 1 TB
ralli
Foriker
 
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39


Zurück zu Datenbankzugriff

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast