Databrowser mit SQL Abfrage befüllen

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Antworten
ralli
Foriker
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Databrowser mit SQL Abfrage befüllen

Beitrag von ralli » Sa 10. Sep 2011, 17:25

Ich will mich mehr und mehr der Datenbankprogrammierung von Gambas widmen. Dafür habe ich mir eine Probeanwendung geschrieben unter Verwendung der Data bound controls Datasource, Databrowser und den DataControl Elementen. Damit habe ich auch problemlos Zugriff auf eine Sqlite3 Datenbank. Beim Öffnen der Verbindung werden dann alle Datensätze im Databrowser und den Datacontrols angezeigt. Zum besseren Verständnis hier der Code:
PUBLIC SUB Button1_Click()

Button Datenbank öffnen

Code: Alles auswählen

PUBLIC SUB Button1_Click()

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

   DataSource1.Filter = "" ' Alle Datensätze werden angezeigt"

   DC_Nachname.Field = "Nachname"

   DC_Vorname.Field = "Vorname"

   DC_Strasse.Field = "Strasse"
 
   DC_Plz.Field = "Plz"

   DC_Wohnort.Field = "Wohnort"

   DC_Vorwahl.Field = "Vorwahl"

   DC_Durchwahl.Field = "Durchwahl"

  DataBrowser1.GridView.MoveTo(0, 0)

END


Das funktioniert auch einwandfrei.

Aber nun möchte ich den Datenbestand natürlich zum Suchen oder Filtern abfragen. Dafür habe ich eine TextBox für die Aufnahme der SQL Abfrage platziert und einen Button zum Starten mit folgendem Code:

Button zum Starten der SQL Abfrage

Code: Alles auswählen

PUBLIC SUB Button3_Click()

DIM Ergebnis AS Result

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

Ergebnis = MDataBase.cDBVerbindung.Exec(Abfrage.Text)

**** und hier komme ich nicht weiter ....

**** wie kann ich den Databrowser mit den gefunden Datensätzen befüllen?

***** Ich habe es über den Filter versucht

   DataSource1.Filter = "select * from telefon where Nachname = "XXXX" 

****** funktioniert aber nicht!

   DC_Nachname.Field = "Nachname"

   DC_Vorname.Field = "Vorname"

   DC_Strasse.Field = "Strasse"
 
   DC_Plz.Field = "Plz"

   DC_Wohnort.Field = "Wohnort"

'   DC_Vorwahl.Field = "Vorwahl"

'   DC_Durchwahl.Field = "Durchwahl"

  DataBrowser1.GridView.MoveTo(0, 0)

CATCH

  Message.Error(DConv(Error.Text))

END


Ich habe mir das mitgelieferte Datenbankbeispiel angeschaut von Gambas, aber ich habe irgendwie eine Denksperre, dort wird auch ein GridView zur Anzeige der gefundenen Datensätze verwendet. Ich aber möchte, das gefundene Datensätze im Databrowser angezeigt werden. Irgendwie habe ich einen fundamentalen Denkfehler. Wer kann mir bitte weiterhelfen? DANKE!

Gruß Ralli
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: Databrowser mit SQL Abfrage befüllen

Beitrag von ralli » So 11. Sep 2011, 08:23

Gut, einen kleinen Schritt bin ich jetzt selbst weiter gekommen:

Wenn in Abfrage.Text Nachname = 'Müller' steht und DataSource.Filter auf

Code: Alles auswählen

DataSource1.Filter = Abfrage.Text


Dann werden erst Mal alle Datensätze mit Müller angezeigt und gefunden.

Warum aber funktioniert

Code: Alles auswählen

MDataBase.Ergebnis = MDataBase.cDBVerbindung.Exec(Abfrage.Text)


oder

Code: Alles auswählen

MDataBase.Ergebnis = MDataBase.cDBVerbindung.Exec("SELECT * FROM telefon where Nachname = 'Müller'")


nicht?
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: Databrowser mit SQL Abfrage befüllen

Beitrag von ralli » Mo 12. Sep 2011, 06:38

Also das hier niemand ist, der mir helfen kann, bezweifel ich zutiefst. Datenbankanbindungen sind doch unersetzbar und sie werden doch in den allermeisten Anwendungen eingesetzt.
Hier wiederhole ich deshalb meine Fragen:

Auf welche Art und Weise führt Ihr SQL Anweisungen aus, die dann das Ergebnis der Abfrage im Databrowser Control anzeigt?

Geht das nur, indem Datasource.Filter benutzt wird?
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

tux_
Moderator
Beiträge: 943
Registriert: Di 11. Nov 2008, 20:05
Kontaktdaten:

Re: Databrowser mit SQL Abfrage befüllen

Beitrag von tux_ » Mo 12. Sep 2011, 19:35

Hi,

m.E. hast du die Lösung schon gefunden, weshalb ich einen Kommentar für unnütz hielt.
Du schränkst die Anzeige eines DataBrowsers über die Filter-Eigenschaft des zugehörigen DataSource-Objektes ein.
Dein Versuch mit Exec() liefert dir ein Result... Das hat nichts mit dem DataBrowser zu tun, der hört nämlich nur auf eine DataSource. Diese widerrum hat ihr Connection-Attribut und besorgt sich daraus ihre Daten. Ob du nun außerhalb dessen noch weiteres abfragst, bekommt die DataSource nicht mit.
Also: DataSource.Filter = String
String ist dabei ein SQL-Where-Satz, wie die Dokumentation angibt.

MfG,
tux_
Achtung: Es passiert, dass ich einen frisch geschrieben Beitrag innerhalb von 10 Minuten noch 3-4 Mal aendere!

ralli
Foriker
Beiträge: 39
Registriert: Mo 9. Feb 2009, 08:39

Re: Databrowser mit SQL Abfrage befüllen

Beitrag von ralli » Di 13. Sep 2011, 04:45

Danke tux_, ich wollte nur Gewissheit und dachte es mir schon. :D Aber so ist es auch komfortabel und spart sogar Tipparbeit. Es funktioniert ja alles, ich habe eben noch like ausprobiert.
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

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast