![]() |
Datenbank: Firebird • Version: 2.0 • Zugriff über: Delphi 5 Interbase
Data Source
Habe mal ne "Verständnisfrage" :
Ich habe folgendes vor ich möchte zunächst aus einer Datenbank (Firebird 2.0) mittels eines IBQuery , DataSource und DBMemo ein Memofeld aus einer Datenbank auslesen. Meine Frage lautet : In welcher Form liegt die Datenmenge in der DataSource - Komponente .... ? Wie kann ich dann anschließend diese Datenmenge einem Memofeld zuweisen ...? Es geht wie gesagt nurums Verständnis ich will nicht zwingend nach Code fragen ? vielen dank für eure mühe |
Re: Data Source
Eine DataSource ist nur einen Verbindungskomponente.
Die datensensitiven VCL-Komponenten besitzen die Eigenschaft DataSource mit der sie sich mit einer DataSource verbinden lassen. |
Re: Data Source
Du meinst, mit einem Dataset.
|
Re: Data Source
Nein DBMemos, DBEdits usw. werden doch mit einer DataSource verbunden.
|
Re: Data Source
Ja genau !
Wie kann ich jetzt den Datensatz meiner Abfrage in ein Memo zur Ansicht packen ? |
Re: Data Source
Delphi-Quellcode:
DataSource.DataSet := IBQuery;
DBMemo.DataSource := DataSource; DBMemo.DataField := <Feld>; |
Re: Data Source
Was ich meinte ist, dass eine DataSource die Verbindung zwischen datensensitiven Komponenten und einer Datenmenge herstellt.
|
Re: Data Source
Delphi-Quellcode:
Habe es hiermit versucht es kommt eine Speicherzugriffsverletzung ?
unit mainUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls, DB, IBDatabase, IBCustomDataSet, IBQuery, IBTable, Grids, DBGrids; type TmainForm = class(TForm) IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; DataSource1: TDataSource; DBMemo1: TDBMemo; IBQuery1: TIBQuery; private { Private declarations } public { Public declarations } end; var mainForm: TmainForm; implementation {$R *.dfm} Begin MainForm.DataSource1.DataSet:= MainForm.IBQuery1; MainForm.DBMemo1.DataSource := MainForm.DataSource1; MainForm.DBMemo1.DataField := 'MEMO1'; end. |
Re: Data Source
Zitat:
|
Re: Data Source
*Aua* pronny31, Grundlagenwissen aneignen!
|
Re: Data Source
Schon klar wobei ich alle einstellungen vorgenommen habe ich habe alle Komponenten im Objekt - Inspektor vorgenommen inkl. des SQL-Statements der IB Query alle Komponenten sind aktiv und wenn ich ne Tabellen nehme ist das ganze auch kein Problem ?
|
Re: Data Source
Mach mal einen Doppelklick auf die Form, füge dort die 3 Zeilen Code ein und lösche die 4 geposteten Zeilen im implementation-Abschnitt (nicht das end.).
|
Re: Data Source
Habe ich gemacht und trotzdem kommt die Speicherverletzung !
Delphi-Quellcode:
unit mainUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls, DB, IBDatabase, IBCustomDataSet, IBQuery, IBTable, Grids, DBGrids; type TmainForm = class(TForm) IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; DataSource1: TDataSource; DBMemo1: TDBMemo; IBQuery1: TIBQuery; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var mainForm: TmainForm; implementation {$R *.dfm} procedure TmainForm.FormCreate(Sender: TObject); begin IBQuery1.Open; IBQuery1.SQL.add('Select Memo1 from pcbeinstellungendefault where zaehler = 10'); DataSource1.DataSet:= IBQuery1; MainForm.DBMemo1.DataSource := MainForm.DataSource1; MainForm.DBMemo1.DataField := 'MEMO1'; end; end. |
Re: Data Source
lass mal MainForm. weg und verscheib den Code besser nach .Loaded()
|
Re: Data Source
Und so?
Delphi-Quellcode:
procedure TmainForm.FormCreate(Sender: TObject);
begin IBQuery1.SQL.add('Select Memo1 from pcbeinstellungendefault where zaehler = 10'); DataSource1.DataSet:= IBQuery1; DBMemo1.DataSource := DataSource1; DBMemo1.DataField := 'MEMO1'; IBQuery1.Open; end; |
Re: Data Source
Die Fehlermeldung lautet : DataSource1 : Circular Datalinks are not allowed
|
Re: Data Source
Hast du zufällig IBQuery per .DataSource auch mit DataSource1 verknüpft?
|
Re: Data Source
Das wird es wohl sein.
|
Re: Data Source
Kommt immer wieder diese Fehlermeldung ?
|
Re: Data Source
Lass mal die Zuweisung zwischen DataSource und IBQuery im Code weg.
|
Re: Data Source
Trifft #17 zu? Dann entferne das.
|
Re: Data Source
Jetzt kommt keine Fehlermeldung mehr aber das Memo ist leer obwohl was drin stehen sollte !
|
Re: Data Source
Ist das Statement vorher leer?
Delphi-Quellcode:
Wie gesagt würde ich den Code nach .Loaded verschieben.
IBQuery1.SQL.Text := 'Select Memo1 from pcbeinstellungendefault where zaehler = 10';
|
Re: Data Source
So es hat endlich funktioniert !!
Delphi-Quellcode:
unit mainUnit;
interface uses Windows, Messages, SysUtils, Variants, Classes, Graphics, Controls, Forms, Dialogs, StdCtrls, DBCtrls, DB, IBDatabase, IBCustomDataSet, IBQuery, IBTable, Grids, DBGrids; type TmainForm = class(TForm) IBDatabase1: TIBDatabase; IBTransaction1: TIBTransaction; IBQuery1: TIBQuery; DataSource1: TDataSource; DBMemo1: TDBMemo; procedure FormCreate(Sender: TObject); private { Private declarations } public { Public declarations } end; var mainForm: TmainForm; implementation {$R *.dfm} procedure TmainForm.FormCreate(Sender: TObject); var test : String ; begin IBQuery1.sql.Clear; IBQuery1.SQL.add('Select Memo1 from pcbeinstellungendefault where zaehler = 10 '); IBQuery1.open; test := IBQuery1.FieldByName('Memo1').asString; DataSource1.DataSet := IBQuery1; DBMemo1.DataSource := DataSource1; DBMemo1.DataField := 'MEMO1'; end; end. |
Re: Data Source
Das kannst DU alles aauch per ObjectInspector einstellen.
Ist dann zwar nicht mehr so übersichtlich, Du sparst Dir aber die Tipp-Arbeit und der Code bleibt übersichtlicher. Jeder soll das so machen, wie er es für richtig hält. Ich hab meistens ne Mischung zwischen OI und Code. Die "Verbindungen" mach ich im OI, den SQL-Code und das Open steht im Code. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 08:02 Uhr. |
Powered by vBulletin® Copyright ©2000 - 2025, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz