AGB  ·  Datenschutz  ·  Impressum  







Anmelden
Nützliche Links
Registrieren
Thema durchsuchen
Ansicht
Themen-Optionen

Position der Labels unverständlich?

Ein Thema von OrNEC · begonnen am 27. Feb 2013 · letzter Beitrag vom 27. Feb 2013
Antwort Antwort
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#1

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 20:54
So lese ich die Daten ein:

Delphi-Quellcode:
procedure TForm1.DetailsMedia();
var dbFile: String;
    db: TSQLiteDatabase;
    tb: TSQLIteTable;
    MyLabel: TLabel;
    MyMemo: TMemo;
begin
  dbFile := ExtractFilePath(ParamStr(0)) + 'Database.db';
  db := TSQLiteDatabase.Create(dbFile);
  try

    // Datensaetze der media Tabelle einlesen
    tb := db.GetTable('SELECT media.id_media,'
    + 'media.mediatitle, '
    + 'media.description, '
    + 'media.edition, '
    + 'media.publicationyear, '
    + 'publisher.pubname, '
    + 'media.isbn, '
    + 'place.planame, '
    + 'category.catname, '
    + 'language.langname, '
    + 'entleiher.elastname, '
    + 'entleiher.efirstname, '
    + 'author.aname '
    + 'FROM media '
    + 'LEFT JOIN publisher ON media.fk_publisher_id=publisher.id_publisher '
    + 'LEFT JOIN place ON media.fk_place_id=place.id_place '
    + 'LEFT JOIN category ON media.fk_category_id=category.id_category '
    + 'LEFT JOIN language ON media.fk_language_id=language.id_language '
    + 'LEFT JOIN author ON media.fk_author_id=author.id_author '
    + 'LEFT JOIN entleiher ON media.fk_entleiher_id=entleiher.id_entleiher WHERE id_media='+idinb+'');
    try
      // Datensatz anzeigen
      if tb.Count > 0 then
      begin
        // Mediatitle
        DetailsMediatitleLabel.Caption := tb.FieldAsString(tb.FieldIndex['mediatitle']);

        // Author
        DetailsAuthorLabel.Caption := tb.FieldAsString(tb.FieldIndex['aname']);

        // Description
        DetailsDescriptionLabel.Caption := tb.FieldAsString(tb.FieldIndex['description']);

        // Edition
        DetailsEditionLabel.Caption := tb.FieldAsString(tb.FieldIndex['edition']) + '. Auflage' + ' ' + tb.FieldAsString(tb.FieldIndex['publicationyear']);

        // Publisher
        DetailsPublisherLabel.Caption := 'Verlag: ' + tb.FieldAsString(tb.FieldIndex['pubname']);

        // ISBN
        DetailsISBNLabel.Caption := 'ISBN: ' + tb.FieldAsString(tb.FieldIndex['isbn']);

        // Category
        DetailsCategoryLabel.Caption := 'Kategorie: ' + tb.FieldAsString(tb.FieldIndex['catname']);

        // Language
        DetailsLanguageLabel.Caption := 'Sprache: ' + tb.FieldAsString(tb.FieldIndex['langname']);

        // Place
        DetailsPlaceLabel.Caption := 'Stehplatz: ' + tb.FieldAsString(tb.FieldIndex['planame']);

        // Breiter der Detailansicht anpassen
        DetailsDynamWidth();
      end;

    finally
      tb.Free;
    end;

  finally
    db.Free;
  end;

end;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#2

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 20:58
Dann noch zur Frage, wie denn die einzelnen Felder in der Datenbank formatiert sind (s. letzter Beitrag)?!
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#3

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 21:00
Delphi-Quellcode:
procedure TForm1.DBerstellen1Click(Sender: TObject);
var dbFile: String; // DB Verzeichniss
    db: TSQLiteDatabase; // Klasse
    sSQL, sSQL1, sSQL2, sSQL3, sSQL4, sSQL5, sSQL6: String;
begin
  dbFile := ExtractFilePath(ParamStr(0)) + 'Database.db';
  db := TSQLiteDatabase.Create(dbFile);
  try

    // Tabelle entleiher wird, sofern sie existiert, gelöscht
    if db.TableExists('entleiher') then
    begin
      sSQL1 := 'DROP TABLE entleiher';
      db.execSQL(sSQL1);
    end;

    // Tabelle author wird, sofern sie existiert, gelöscht
    if db.TableExists('author') then
    begin
      sSQL2 := 'DROP TABLE author';
      db.execSQL(sSQL2);
    end;

    // Tabelle category wird, sofern sie existiert, gelöscht
    if db.TableExists('category') then
    begin
      sSQL3 := 'DROP TABLE category';
      db.execSQL(sSQL3);
    end;

    // Tabelle publisher wird, sofern sie existiert, gelöscht
    if db.TableExists('publisher') then
    begin
      sSQL4 := 'DROP TABLE publisher';
      db.execSQL(sSQL4);
    end;

    // Tabelle place wird, sofern sie existiert, gelöscht
    if db.TableExists('place') then
    begin
      sSQL5 := 'DROP TABLE place';
      db.execSQL(sSQL5);
    end;

    // Tabelle language wird, sofern sie existiert, gelöscht
    if db.TableExists('language') then
    begin
      sSQL6 := 'DROP TABLE language';
      db.execSQL(sSQL6);
    end;

    // Tabelle media wird, sofern sie existiert, gelöscht
    if db.TableExists('media') then
    begin
      sSQL := 'DROP TABLE media';
      db.execSQL(sSQL);
    end;

    // Enable foreign key constraints
    db.execSQL('PRAGMA foreign_keys = ON;');

    // Tabelle entleiher anlegen
    sSQL1 := 'CREATE TABLE entleiher ([id_entleiher] INTEGER PRIMARY KEY NOT NULL,';
    sSQL1 := sSQL1 + '[efirstname] VARCHAR (255) NOT NULL,';
    sSQL1 := sSQL1 + '[elastname] VARCHAR (255) NOT NULL,';
    sSQL1 := sSQL1 + '[telefon] VARCHAR (255),';
    sSQL1 := sSQL1 + '[email] VARCHAR (255), UNIQUE(efirstname, elastname));';

    // Tabelle author anlegen
    sSQL2 := 'CREATE TABLE author ([id_author] INTEGER PRIMARY KEY NOT NULL,';
    sSQL2 := sSQL2 + '[aname] VARCHAR (255) NOT NULL, UNIQUE(aname));';

    // Tabelle category anlegen
    sSQL3 := 'CREATE TABLE category ([id_category] INTEGER PRIMARY KEY NOT NULL,';
    sSQL3 := sSQL3 + '[catname] VARCHAR (255) NOT NULL, UNIQUE(catname));';

    // Tabelle publisher anlegen
    sSQL4 := 'CREATE TABLE publisher ([id_publisher] INTEGER PRIMARY KEY NOT NULL,';
    sSQL4 := sSQL4 + '[pubname] VARCHAR (255) NOT NULL, UNIQUE(pubname));';

    // Tabelle place anlegen
    sSQL5 := 'CREATE TABLE place ([id_place] INTEGER PRIMARY KEY NOT NULL,';
    sSQL5 := sSQL5 + '[planame] VARCHAR (255) NOT NULL, UNIQUE(planame));';

    // Tabelle language anlegen
    sSQL6 := 'CREATE TABLE language ([id_language] INTEGER PRIMARY KEY NOT NULL,';
    sSQL6 := sSQL6 + '[langname] VARCHAR (255) NOT NULL, UNIQUE(langname));';

    // Tabelle media wird angelegt
    sSQL := 'CREATE TABLE media ([id_media] INTEGER PRIMARY KEY NOT NULL,';
    sSQL := sSQL + '[mediatitle] VARCHAR (255) NOT NULL,';
    sSQL := sSQL + '[description] VARCHAR (255),';
    sSQL := sSQL + '[status] INTEGER NOT NULL,';
    sSQL := sSQL + '[isbn] VARCHAR (255),';
    sSQL := sSQL + '[edition] INTEGER,';
    sSQL := sSQL + '[publicationyear] INTEGER,';
    sSQL := sSQL + '[fk_publisher_id] INTEGER,';
    sSQL := sSQL + '[fk_place_id] INTEGER,';
    sSQL := sSQL + '[fk_category_id] INTEGER NOT NULL,';
    sSQL := sSQL + '[fk_language_id] INTEGER NOT NULL,';
    sSQL := sSQL + '[fk_author_id] INTEGER,';
    sSQL := sSQL + '[fk_entleiher_id] INTEGER,';
    sSQL := sSQL + 'FOREIGN KEY(fk_publisher_id) REFERENCES publisher(id_publisher) ON DELETE RESTRICT,';
    sSQL := sSQL + 'FOREIGN KEY(fk_place_id) REFERENCES place(id_place) ON DELETE RESTRICT,';
    sSQL := sSQL + 'FOREIGN KEY(fk_category_id) REFERENCES category(id_category) ON DELETE RESTRICT,';
    sSQL := sSQL + 'FOREIGN KEY(fk_language_id) REFERENCES language(id_language) ON DELETE RESTRICT,';
    sSQL := sSQL + 'FOREIGN KEY(fk_author_id) REFERENCES author(id_author) ON DELETE RESTRICT,';
    sSQL := sSQL + 'FOREIGN KEY(fk_entleiher_id) REFERENCES entleiher(id_entleiher) ON DELETE RESTRICT);';

    // Create Befehl wird ausgeführt
    db.execSQL(sSQL1);
    db.execSQL(sSQL2);
    db.execSQL(sSQL3);
    db.execSQL(sSQL4);
    db.execSQL(sSQL5);
    db.execSQL(sSQL6);
    db.execSQL(sSQL);

    // Transaktion beginnt
    db.BeginTransaction;

    // entleiher Tabelle füllen
    sSQL1 := 'INSERT INTO entleiher(efirstname, elastname, telefon, email)';
    sSQL1 := sSQL1 + 'VALUES ("Alexander", "Bayer", "0123-567890", "alex@bayer_xyz.de");';

    // author Tabelle füllen
    sSQL2 := 'INSERT INTO author(aname)';
    sSQL2 := sSQL2 + 'VALUES ("Dr. Werner Gimp");';

    // category Tabelle füllen
    sSQL3 := 'INSERT INTO category(catname)';
    sSQL3 := sSQL3 + 'VALUES ("Buch");';

    // publisher Tabelle füllen
    sSQL4 := 'INSERT INTO publisher(pubname)';
    sSQL4 := sSQL4 + 'VALUES ("CLW");';

    // place Tabelle füllen
    sSQL5 := 'INSERT INTO place(planame)';
    sSQL5 := sSQL5 + 'VALUES ("Rof");';

    // language Tabelle füllen
    sSQL6 := 'INSERT INTO language(langname)';
    sSQL6 := sSQL6 + 'VALUES ("Deutsch");';

    // media Tabelle füllen
    sSQL := 'INSERT INTO media(fk_author_id, mediatitle, description, status, isbn,';
    sSQL := sSQL + 'edition, publicationyear, fk_publisher_id, fk_place_id, fk_category_id, fk_language_id, fk_author_id, fk_entleiher_id) VALUES (1, "Java", "Das ist die Besch.", 1,';
    sSQL := sSQL + '"3-3434-78", 3, 2012, 1, 1, 1, 1, 1, 1);';

    // Insert Befehl wird ausgeführt
    db.ExecSQL(sSQL1);
    db.ExecSQL(sSQL2);
    db.ExecSQL(sSQL3);
    db.ExecSQL(sSQL4);
    db.ExecSQL(sSQL5);
    db.ExecSQL(sSQL6);
    db.ExecSQL(sSQL);

    // Transaktion endet
    db.Commit;

  finally
    db.Free;
  end;

  ShowMedia();
end;
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#4

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 21:13
Hmm,

also an der Erstellung kann ich keine Auffälligkeiten erkennen. Ich denke, dass da soweit alles richtig ist. Beim Einlesen habe ich auch keine Bedenken.

Eine Möglichkeit, noch etwas zu erkennen wäre: Lass dir mal die Zeichenzahl ausgeben (vom Description Label) und vergleiche sie mit der tatsächlich gespeicherten Anzahl. (Zählen angesagt )
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#5

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 21:17
Muss ich wohl machen, aber ich verstehe immer noch nicht, wieso nur beim ersten Aufruf. Aber ok, ich mache wie du vorgeschlagen hast.
  Mit Zitat antworten Zitat
Aviator

Registriert seit: 3. Jun 2010
1.611 Beiträge
 
Delphi 10.3 Rio
 
#6

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 21:22
Ehrlich gesagt kann ich dir das so nicht sagen. Möglicherweise hilft das durch debuggen weiter und du findest den Fehler so. Manchmal sieht man ja den Wald vor lauter Bäumen nicht. Vielleicht springt dir etwas ins Auge was du oder wir alle übersehen haben

Wenn dir etwas auffällt, einfach melden. Die Community hilft immer weiter
Wenn du den Fehler gefunden hast sei so nett und schreibs hier mal. Würd mich echt auch interessieren.
  Mit Zitat antworten Zitat
OrNEC

Registriert seit: 6. Nov 2009
493 Beiträge
 
FreePascal / Lazarus
 
#7

AW: Position der Labels unverständlich?

  Alt 27. Feb 2013, 21:26
Also es liegt eindeutig an WordWrap, den das Problem verursachen nur die Labels, bei denen WordWrap aktiviert ist. Du hattest im Post #4 recht.

Wie kann ich die Höhe des Labels mit WordWrap so minimal wie möglich halten?
  Mit Zitat antworten Zitat
Antwort Antwort


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 00:56 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-2025 by Thomas Breitkreuz