Auf Daten zugreifen?

Spezielle Fragen zu PostgreSQL, MySQL, SQLite, SQL ...
Antworten
Benutzeravatar
cybermonkey342
Foriker
Beiträge: 28
Registriert: So 9. Mär 2008, 13:07
Wohnort: Ba-Wü
Kontaktdaten:

Auf Daten zugreifen?

Beitrag von cybermonkey342 » So 9. Nov 2008, 19:10

Hallo,

habe da ein kleines Problem, um mit GAMBAS an die Daten eienr Tabelle mit sqlite3 ranzukommen. Ich möchte kein Gridview benutzen, also weiß ich gar nicht ob das so geht. Hier mal ein bisschen Code:

Code: Alles auswählen

PRIVATE hConn AS NEW Connection
PRIVATE i AS Integer

PUBLIC SUB _new()
TRY hConn.Close

WITH hConn
.Type = "sqlite3"
.Host = User.Home
.Login = ""
.Password = ""

END WITH

hConn.Open

IF NOT hConn.Databases.Exist("test.db") THEN
  hConn.Databases.Add("test.db")
ENDIF
WAIT 0.5

hConn.Close

hConn.Name = ("test.db")
hConn.Open

CATCH
  Message.Error(Error.Text)
END

PUBLIC SUB Form_Open()
DIM hTable AS Table
' Erst mal sehen, ob die Tabelle existiert, wenn nein, dann anlegen
IF NOT hConn.Tables.Exist("lauf") THEN
  hTable = hConn.Tables.Add("lauf")
  hTable.Fields.Add("name", gb.String, 128)
  hTable.Fields.Add("laeufer", gb.Integer)
  hTable.PrimaryKey = ["laeufer"]
  hTable.Update
 
ENDIF

 
END

PUBLIC SUB Button1_Click()
 
    DIM rTest AS Result
  DIM hField AS ResultField
 
  'Bitte nicht stören ...
  INC Application.Busy
  rTest = hConn.Create("lauf")
  rTest!laeufer = Val(TextBox2.Text)
  rTest!name = TextBox1.Text
  rTest.Update
  hConn.Commit
     
FINALLY
  DEC Application.Busy
 
 
END


PUBLIC SUB Button2_Click()

  DIM rTest AS Result
  DIM hField AS ResultField
  DIM ergebnis AS String
  DIM element AS Variant

  rTest = hConn.Create("lauf")
  FOR EACH hField IN rTest.Fields
  PRINT hField.name
  NEXT
   
END


Also es geht, dass ich die Datenbank anlege, ich kann einzelne Läufer und Nummern eingeben und das ganze mit dem Datenbank-Manager von GAMBAS ansehen. Aber wie kann ich auf die einzelnen Daten "unterhalb" eines Feldes zugreifen? Mit meiner PRINT-Anweisung gibt er mir nur die "Tabellentitel" aus. Habe auch schon ein:

Code: Alles auswählen

rTest.MoveTo(0)
element = rTest[0].Text
probiert.
Dann heißt es: Not an object ... auch wenn ich z.B. element als Object deklariere. Wer weiss da weiter?
Mit den besten Grüßen,
Cybermonkey342

yoda
Moderator
Beiträge: 431
Registriert: Mo 2. Jan 2006, 22:35
Wohnort: bei Göttinge
Kontaktdaten:

Re: Auf Daten zugreifen?

Beitrag von yoda » So 9. Nov 2008, 20:29

Hi,

Mit SQLite kenne ich mich nicht aus ich mache das bei mir normal.

String mit den Befehl für die Datenbank:

sql = "select * from log order by " & orderby & " DESC"


Befehl ausführen:

resultP = $hConn.Exec(sql)


in einer Sleife dann in einen ColumnView schreiben:

IF resultP.Available THEN
resultP.MoveFirst
WITH ColumnView1
.Columns.Count = 16
.Columns[0].Width = 30
.Columns[0].Text = "ID"
.Columns[1].Width = 60
.Columns[1].Text = "QRG"
.Columns[2].Width = 60
.Columns[2].Text = "Call"
.Columns[3].Width = 60
.Columns[3].Text = "Name"
.Columns[4].Width = 60
.Columns[4].Text = "Datum"
.Columns[5].Width = 60
.Columns[5].Text = "UTC"
.Columns[6].Width = 50
.Columns[6].Text = "Mode"
.Columns[7].Width = 60
.Columns[7].Text = "QTH"
.Columns[8].Width = 60
.Columns[8].Text = "Locator"
.Columns[9].Width = 60
.Columns[9].Text = "DOK"
.Columns[10].Width = 60
.Columns[10].Text = "QSL ein"
.Columns[11].Width = 60
.Columns[11].Text = "QSL aus"
.Columns[12].Width = 60
.Columns[12].Text = "RST erh."
.Columns[13].Width = 60
.Columns[13].Text = "Wtts"
.Columns[14].Width = 100
.Columns[14].Text = "Bemerkung"
.Columns[15].Width = 100
.Columns[15].Text = "Timestump"

END WITH
ColumnView1.Clear()
FOR v_zeile = 0 TO resultP.Count - 1
IdP.Add(Str(v_zeile))
IdP[v_zeile] = resultP!id
ColumnView1.Add(v_zeile, resultP!id)
ColumnView1[v_zeile][1] = resultP!qrg
ColumnView1[v_zeile][2] = resultP!call
ColumnView1[v_zeile][3] = resultP!vname
ColumnView1[v_zeile][4] = resultP!datum
ColumnView1[v_zeile][5] = resultP!utc
ColumnView1[v_zeile][6] = resultP!mode
ColumnView1[v_zeile][7] = resultP!land
ColumnView1[v_zeile][8] = resultP!locator
ColumnView1[v_zeile][9] = resultP!dok
ColumnView1[v_zeile][10] = qsl_ein
ColumnView1[v_zeile][11] = resultP!qsl_aus
ColumnView1[v_zeile][12] = resultP!rst_erh
ColumnView1[v_zeile][13] = resultP!wtts_aus
ColumnView1[v_zeile][14] = resultP!bemerk
ColumnView1[v_zeile][15] = resultP!stump

resultP.MoveNext
gesamt = gesamt + 1
TextLabel65.Text = " Gesamteinträge:" & gesamt
NEXT

END IF
TRY $hConn.Close



die Tabelle siht bei mir so aus:
'id call vname nname datum utc ort Str plz tel emil mode rst_geg rst_erh qrg locator dok qsl_aus qsl_ein wtts_aus wtts_ein bemerk

mfg Yoda

Antworten

Wer ist online?

Mitglieder in diesem Forum: 0 Mitglieder und 1 Gast