AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Zurück Delphi-PRAXiS Programmierung allgemein Datenbanken Einfache Tabelle mit TClientDataSet
Thema durchsuchen
Ansicht
Themen-Optionen

Einfache Tabelle mit TClientDataSet

Ein Thema von DualCoreCpu · begonnen am 12. Jan 2019 · letzter Beitrag vom 13. Jan 2019
 
DualCoreCpu
(Gast)

n/a Beiträge
 
#1

Einfache Tabelle mit TClientDataSet

  Alt 12. Jan 2019, 07:45
Datenbank: MyBase • Version: 10.3 • Zugriff über: localhost
Hallo nochmal,


bevor ich mit dem Studium der Tutorals richtig beginne, habe ich mal eine einfache Datentabelle mit TDataSource und TClientDataSet aufgebaut. Leider kann ich immer noch keine Daten eingeben. Was mache ichda noch falsch?

Hier die dfm Datei:

Delphi-Quellcode:
object Form1: TForm1
  Left = 0
  Top = 0
  Caption = 'Form1'
  ClientHeight = 477
  ClientWidth = 565
  Color = clBtnFace
  Font.Charset = DEFAULT_CHARSET
  Font.Color = clWindowText
  Font.Height = -11
  Font.Name = 'Tahoma'
  Font.Style = []
  OldCreateOrder = False
  OnCreate = FormCreate
  PixelsPerInch = 96
  TextHeight = 13
  object DBGrid1: TDBGrid
    Left = 8
    Top = 80
    Width = 549
    Height = 329
    DataSource = DataSource1
    TabOrder = 0
    TitleFont.Charset = DEFAULT_CHARSET
    TitleFont.Color = clWindowText
    TitleFont.Height = -11
    TitleFont.Name = 'Tahoma'
    TitleFont.Style = []
    Columns = <
      item
        Expanded = False
        FieldName = 'Medium'
        Width = 94
        Visible = True
      end
      item
        Expanded = False
        FieldName = 'Autor'
        Width = 112
        Visible = True
      end
      item
        Expanded = False
        FieldName = 'Titel'
        Visible = True
      end>
  end
  object DBNavigator1: TDBNavigator
    Left = 152
    Top = 32
    Width = 240
    Height = 25
    DataSource = DataSource1
    TabOrder = 1
  end
  object btnSave: TButton
    Left = 16
    Top = 440
    Width = 75
    Height = 25
    Caption = 'Speichern'
    TabOrder = 2
  end
  object DataSource1: TDataSource
    DataSet = ClientDataSet1
    Left = 56
    Top = 16
  end
  object ClientDataSet1: TClientDataSet
    PersistDataPacket.Data = {
      6D0000009619E0BD0100000018000000030000000000030000006D00096D6564
      69616B696E64010049000000010005574944544802000200030006617574686F
      720100490000000100055749445448020002001E00057469746C650100490000
      0001000557494454480200020028000000}

    Active = True
    Aggregates = <>
    Params = <>
    Left = 56
    Top = 72
    object ClientDataSet1mediakind: TStringField
      FieldName = 'mediakind'
      Size = 3
    end
    object ClientDataSet1author: TStringField
      FieldName = 'author'
      Size = 30
    end
    object ClientDataSet1title: TStringField
      FieldName = 'title'
      Size = 40
    end
  end
  object DataSetProvider1: TDataSetProvider
    DataSet = ClientDataSet1
    Left = 56
    Top = 128
  end
end
Hier die Formular Unit:

Delphi-Quellcode:
unit main;

interface

uses
  Winapi.Windows, Winapi.Messages, System.SysUtils, System.Variants, System.Classes, Vcl.Graphics,
  Vcl.Controls, Vcl.Forms, Vcl.Dialogs, Data.DB, Vcl.ExtCtrls, Vcl.DBCtrls,
  Vcl.Grids, Vcl.DBGrids, Datasnap.Provider, Datasnap.DBClient, Vcl.StdCtrls;

type
  TForm1 = class(TForm)
    DataSource1: TDataSource;
    ClientDataSet1: TClientDataSet;
    DataSetProvider1: TDataSetProvider;
    ClientDataSet1mediakind: TStringField;
    ClientDataSet1author: TStringField;
    ClientDataSet1title: TStringField;
    DBGrid1: TDBGrid;
    DBNavigator1: TDBNavigator;
    btnSave: TButton;
    procedure FormCreate(Sender: TObject);
  private
    { Private-Deklarationen }
  public
    { Public-Deklarationen }
  end;

var
  Form1: TForm1;

implementation

{$R *.dfm}

procedure TForm1.FormCreate(Sender: TObject);
begin
  ClientDataSet1.FileName := ExtractFilePath(ParamStr(0))+'media.xml';
  {
  if FileExists(ClientDataSet1.FileName) then
    ClientDataSet1.LoadFromFile(ClientDataSet1.FileName)
  else
    ClientDataSet1.CreateDataSet;
  }


  if FileExists(ClientDataSet1.FileName) then
    ClientDataSet1.Open
  else begin
    with ClientDataSet1.FieldDefs do begin
      Clear;
      Add('media', ftString, 3);
      Add('author', ftString, 30);
      Add('title', ftString, 40);
    end;
    ClientDataSet1.CreateDataSet;
  end;

  ClientDataSet1.LoadFromFile('media.xml');
end;

end.
Nach dem Tutorial zu MyBase in Delphi Treff aufgebaut. Habe halt nur das AutoIncrement Feld aus diesem Tutorial weggelassen.

Das Programm wird korrekt übersetzt, ich kann aber keine Daten eingeben. Warum ist das so?

Entfernung der Komponente TDataSetProvider bringt keine Besserung. Den TDataSetProvider brauche ich erst später, um eine Verbindung zu weiteren Tabellen herzustellen, wenn ich die Normalform der Datenbank erstellt habe.

Ich habe die Komponentennamen im Original belassen, um zu zeigen, das ich hier TClientDataSet verwende, um das Tutorial im Delphi Treff durchzuarbeiten.

Geändert von DualCoreCpu (12. Jan 2019 um 07:51 Uhr)
  Mit Zitat antworten Zitat
 


Forumregeln

Es ist dir nicht erlaubt, neue Themen zu verfassen.
Es ist dir nicht erlaubt, auf Beiträge zu antworten.
Es ist dir nicht erlaubt, Anhänge hochzuladen.
Es ist dir nicht erlaubt, deine Beiträge zu bearbeiten.

BB-Code ist an.
Smileys sind an.
[IMG] Code ist an.
HTML-Code ist aus.
Trackbacks are an
Pingbacks are an
Refbacks are aus

Gehe zu:

Impressum · AGB · Datenschutz · Nach oben
Alle Zeitangaben in WEZ +1. Es ist jetzt 02:07 Uhr.
Powered by vBulletin® Copyright ©2000 - 2024, Jelsoft Enterprises Ltd.
LinkBacks Enabled by vBSEO © 2011, Crawlability, Inc.
Delphi-PRAXiS (c) 2002 - 2023 by Daniel R. Wolf, 2024 by Thomas Breitkreuz