Datensensitiven Controls + Firebird

Für Themen zu Datenbanken und Zugriff auf diese. Auch für Datenbankkomponenten.
Antworten
jb
Beiträge: 17
Registriert: Di 30. Jan 2007, 22:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Ladbergen

Beitrag von jb »

Hab gerade mal ein einfaches Progrämmchen versucht, der Connect scheint zu gehen, der Open der Query auch, aber bei den datensensitiven Controls bekomm ich nichts angezeigt :(

Server läuft unter Debian Woody Client ist Win2K (Lazarus Programm natürlich auch).
Muss ich nochmal weiter basteln...

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

Hast du auch ein entsprechendes Transact für die Connection und Query?

Und hast du der Tdatensource die entsprechende Query unter Dataset zugewiesen und der datensensitiven Komponenten wiederrum die entsprechende Datasource und das entsprechende DataField.

Ich nehm ja mal an, du siehst einfach nicht in den Komponenten bekommst aber keine Fehlermeldung?

jb
Beiträge: 17
Registriert: Di 30. Jan 2007, 22:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Ladbergen

Beitrag von jb »

Yepp
das Konzept ist ja das selbe wie bei Delphi bzw wie bei der IBO. von daher denke ich mal, das ich die Zuordnungen Dataset,Datasource etc schon korrekt habe. Allerdings hab ich sie in den Eigenschaften eingetragen und setzte sie nicht zur Laufzeit erneut. Das werd ich nochmal probieren.

Ich nehm ja mal an, du siehst einfach nicht in den Komponenten bekommst aber keine Fehlermeldung?

genau das.
Weder im Designer, und ebenfalls nicht zur Laufzeit.

Christian
Beiträge: 6079
Registriert: Do 21. Sep 2006, 07:51
OS, Lazarus, FPC: iWinux (L 1.x.xy FPC 2.y.z)
CPU-Target: AVR,ARM,x86(-64)
Wohnort: Dessau
Kontaktdaten:

Beitrag von Christian »

Ich wiederhol jetzt einfach noch m,al die wichtigste Farge von Monta:
Hast du auch ein entsprechendes Transact für die Connection und Query?
W.m.k.A.h.e.m.F.h. -> http://www.gidf.de/

jb
Beiträge: 17
Registriert: Di 30. Jan 2007, 22:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Ladbergen

Beitrag von jb »

@Christian
Yepp
unter Firebird kann man ohne Transaktion nicht mal lesen.

Oder muss bei der Transaktionskomponente irgendwas besonderes eingestellt werden ?

Ich arbeite normalerweise mit IBObjects (glaube nicht, das es das bisher für Lazarus gibt, zumindest hab ich's nicht gefunden), da ist das Transaktionsmanagment sehr kompfortabel gelöst.

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

also die Transaktion find ich ja völlig ausreichend gelöst.

Du musst meine ich auch dort die Database einstellen. Ansonsten eigentlich nichts. Wenn ich daheim bin, kann ich nochmal genau nachsehen. Hab hier momentan kein Laz.

jb
Beiträge: 17
Registriert: Di 30. Jan 2007, 22:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Ladbergen

Beitrag von jb »

Nur kein Stress :) Ich wollt's ja nur mal probieren, wäre natürlich doll, wenn es ginge, wenn ich zB Rtg Linux denke.

Hier mal die Komponenten des Formulares;
die Datenbank selbst und die SQL-Anweisung werden im Progr. eingestellt:

Code: Alles auswählen

object DBGrid1: TDBGrid
    Left = 30
    Height = 184
    Top = 128
    Width = 362
    DataSource = Datasource1
    FixedColor = clBtnFace
    Options = [dgEditing, dgTitles, dgIndicator, dgColumnResize, dgColumnMove, dgColLines, dgRowLines, dgTabs, dgAlwaysShowSelection, dgConfirmDelete, dgCancelOnExit]
    OptionsExtra = [dgeAutoColumns, dgeCheckboxColumn]
    ParentColor = False
    TabOrder = 1
    TabStop = True
  end
  object DBNavigator1: TDBNavigator
    Left = 33
    Height = 25
    Top = 102
    Width = 241
    BevelOuter = bvNone
    DataSource = Datasource1
  end
  object DBEdit1: TDBEdit
    Left = 147
    Height = 23
    Top = 61
    Width = 80
    DataField = 'ADRNR'
    DataSource = Datasource1
    ParentColor = False
    TabOrder = 2
  end
  object IBConnection1: TIBConnection
    Transaction = SQLTransaction1
    left = 192
    top = 8
  end
  object SQLTransaction1: TSQLTransaction
    Action = caCommit
    Database = IBConnection1
    left = 232
    top = 8
  end
  object Datasource1: TDatasource
    DataSet = SQLQuery1
    left = 272
    top = 8
  end
  object SQLQuery1: TSQLQuery
    Database = IBConnection1
    Transaction = SQLTransaction1
    Params = <>
    UpdateMode = upWhereKeyOnly
    UsePrimaryKeyAsKey = True
    ParseSQL = True
    DataSource = Datasource1
    left = 312
    top = 8
  end


Und hier der Quelltext bzw der Auszug onButten1Click, aus dem dieses Testprogr besteht:

Code: Alles auswählen

IBConnection1.DatabaseName := 'debi:/ibdata/CAMPOS.GDB';
IBConnection1.Dialect := 3;
IBConnection1.HostName := '';
IBConnection1.UserName := 'sysdba';
IBConnection1.Password := 'masterkey';
IBConnection1.Connected := true;
SQLQuery1.Close;
SQLTransaction1.Active := True;
SQLQuery1.SQL.Clear;
SQLQuery1.SQL.Add('select * from t_st_adr');
SQLQuery1.Open;

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

So, hat zwar etwas gedauert, aber der Fehler dürfte klein sein - mit großer Wirkung:

Code: Alles auswählen

object SQLQuery1: TSQLQuery
    Database = IBConnection1
    Transaction = SQLTransaction1
    Params = <>
    UpdateMode = upWhereKeyOnly
    UsePrimaryKeyAsKey = True
    ParseSQL = True
//    DataSource = Datasource1 <<<<<<<<<<<<
    left = 312
    top = 8
  end


Eine Query hat keine Datasource sondern ist sie ja selbst, zumindest kommt Laz an der Stelle damit nicht klar, wenn du die Datasource bei der Query raus nimmst, muss es eigentlich gehen.

Benutzeravatar
af0815
Lazarusforum e. V.
Beiträge: 6198
Registriert: So 7. Jan 2007, 10:20
OS, Lazarus, FPC: FPC fixes Lazarus fixes per fpcupdeluxe (win,linux,raspi)
CPU-Target: 32Bit (64Bit)
Wohnort: Burgenland
Kontaktdaten:

Beitrag von af0815 »

Eine Query hat keine Datasource sondern ist sie ja selbst, zumindest kommt Laz an der Stelle damit nicht klar, wenn du die Datasource bei der Query raus nimmst, muss es eigentlich gehen.


In der Query benötigst Du die Eingenschaft DataSource nur dann wenn du Master->Detailbeziehungen hast. Dann kommt NUR bei der Detailquery die Info über die Masterdatasource hinein.

Im andern Fall macht Lazarus ja das richtige - er Verweigert, da du ja eine zirkulare Referenz erzeugt.
Blöd kann man ruhig sein, nur zu Helfen muss man sich wissen (oder nachsehen in LazInfos/LazSnippets).

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

ja, schon richtig, aber das Resultat ist zumindest nicht wirklich ersichtlicher Weise auf diese Referenz zurückzuführen.

Sondern man sucht erstmal an allen möglichen Stellen, sollte man doch, weil man so am einstellen war, auch der Query ne datasource zugewiesen haben.

jb
Beiträge: 17
Registriert: Di 30. Jan 2007, 22:34
OS, Lazarus, FPC: Winux (L 0.9.xy FPC 2.2.z)
CPU-Target: xxBit
Wohnort: Ladbergen

Beitrag von jb »

@monta

vielen Dank.
Natürlich darf ne Query keinen Datasource-Eintrag auf sich selbst haben :oops:
Ich hab mir diese ganzen Zuordnungen bestimmt 100 Mal angeschaut, glaubst du, ich hätte es gesehen *Hmpfff*
Klar, jetzt gehts.
Vielen Dank nochmal

monta
Lazarusforum e. V.
Beiträge: 2809
Registriert: Sa 9. Sep 2006, 18:05
OS, Lazarus, FPC: Linux (L trunk FPC trunk)
CPU-Target: 64Bit
Wohnort: Dresden
Kontaktdaten:

Beitrag von monta »

ja, da kann man tausend mal draufschauen und siehts nicht, und ein andere siehts sofort, weil er als Aussenstehender nicht so Betriebsblind ist ;)

Antworten