![]() |
Datenbank: MyBase • Version: ? • Zugriff über: ?
MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Hi,
Ich habe schon eine gefühlte Ewigkeit gegooglet aber habe nichts passendes gefunden, wie ich in eine MyBase Datenbank, ohne TDBGrid, Daten einfügen kann. Dazu möchte ich noch in der Tabelle suchen. Ich wurde aus den Tutorials vom Delphi Treff nicht schlau... :( Was Datenbanken angeht, ich bin recht neu in diesem Gebiet. Danke Luki206 :) PS: Ich benutze MyBase weil ich eine recht 'einfache' Art gesucht habe, mit Datenbanken zu arbeiten und da die BDE nicht mehr verfügbar ist ;) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Mit dem DBGrid hat das auch nichts zu tun, wohl aber mit dem ClientDataset. Schau mal hier:
![]() ![]() P.S.: Willkommen in der DP :dp: |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Zitat:
Wenn Du dich in das Thema 'Datenbank' einarbeiten willst, empfehle ich dir, zunächst eine echte Datenbank zu installieren und damit ein wenig rumzuspielen. Wenn Du ungefähr weißt, wie eine Datenbank arbeitet und wozu man sie benötigt, dann fängst Du an, die Daten in Delphi einzulesen und von da aus wieder abzuspeichern. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Danke für eure Antworten :thumb:
Nur verstehe ich die Tutorials von Emba nicht :-D hab jetzt schon eine Weile nachgedacht, hat aber nichts genutzt :D Danke Luki |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Was genau hast du nicht verstanden?
|
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Wenn ich ehrlich bin, die Erklärung an sich. :)
weil ich weiß nicht wie ich des mit der Tabelle kombinieren soll :) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
![]() Du nimmst ein TClientDataSet, definierst Felder über eine der beiden dort aufgeführten Methoden und erstellst dann die Daten-Datei (XML oder binär). Über eine TDatasource Komponente kannst du datensensitive Komponenten wie z.B.ein DBGrid mit dem ClientDataSet verknüpfen. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Ok danke :)
10 Klasse Englisch reicht anscheinend doch aus :D |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Also wenn ich das richtig gelesen und verstanden habe, geht es in dem Tutorial nur um das erstellen einer Tabelle zur Laufzeit oder?
Habe mich, glaub ich, wieder zu unverständlich ausgedrückt :DD Ich möchte in die Tabelle zur Laufzeit eine OnClick Action einbinden die Daten in diese Tabelle einfügt ;) Und dann ist da die Sache mit dem 'in der Tabelle suchen' :) Danke Luki :) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Liste der Anhänge anzeigen (Anzahl: 1)
Ich hatte da noch eine alte (und nicht sonderlich gute) Demo zu ClientDataset rumliegen, die habe ich noch kurz erweitert, ich hoffe, das reicht zum Anschauen.
|
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Ohh Danke, danke, danke :D
Ich glaub jetzt kapier ichs :-D |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Zitat:
Suchen geht dann über Locate. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Nur habe ich jetzt noch ein Problem, kann ich die CDS Tabelle in eine Excel Tabelle speichern oder die Tabelle ausdrucken?
Ich habe schon wieder nichts gefunden.. Langsam denk ich ich bin zu dumm zu googlen.. Danke Luki |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Da ein ClientDataSet auch nur ein DataSet ist, solltest du nach "DataSet Export Excel" oder "DataSet Drucken".
Niemand kommt auf die Idee nach einem "Jona Gold Kuchen" zu suchen, sonder nach "Apfel Kuchen" ;) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Zum Drucken einer Datenmenge würde ich einen Reportgenerator benutzen. Export nach Excel wird (meine ich) von einer TClientDataset Komponente nicht direkt unterstützt und müsste ggf. "händisch" programmiert werden.
|
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Bitte nicht denken dass ich zu faul bin zu suchen, aber ich finde wirklich nichts wenn ich Google...
Wenn ich google bekomm ich 50 verschiedene Versionen. @MrSpock: Wie würde ich das anstellen wenn ich einen Reportgenerator beutzen würde, weil dazu hatte ich auch nichts gefunden? Danke Luki :) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Das kommt darauf an, welche Delphi Version du hast und welcher Reportgenerator da mitgeliefert wird. Ich nutze FastReport (als Kaufkomponente) und habe früher QuickReport und in einem Bericht auch mal Rave Report benutzt. Welchen hast du?
P.S.: Hab gerade gesehen, dass du XE5 Starter hast. Laut Feature Matrix ist das "FastReport VCL 4 RAD Edition reporting tool" nicht dabei. :-( |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Gäbe es dann noch eine andere Möglichkeit die Daten von CDS in eine Excel Tabelle zuspeichern, wenn ja könnte man das auch mit Word machen? Also dass es dann in Word so aussieht:
Eintrag 24.10.13 # Name: # Vorname: # Adresse: Ginge etwas so in der Art? :) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Fastreport kann auch nach Excel exportieren. Die günstigste Version kosten 79 US$. Aber wie gesagt, du kannst es auch "händisch" machen, z.B. so ähnlich wie:
Delphi-Quellcode:
procedure TForm1.Button4Click(Sender: TObject);
var LCID : Integer; begin LCID := LOCALE_USER_DEFAULT; try ExcelApplication1.Visible[LCID] := True; ExcelApplication1.Workbooks.Open('C:\Lokal\ClientDSExcel.xls', EmptyParam, // UpdateLinks: OleVariant EmptyParam, // ReadOnly: OleVariant EmptyParam, // Format: OleVariant EmptyParam, // Password: OleVariant EmptyParam, // WriteResPassword: OleVariant EmptyParam, // IgnoreReadOnlyRecommended: OleVariant EmptyParam, // Orign: OleVariant EmptyParam, // Delimiter: OleVariant EmptyParam, // Editable: OleVariant EmptyParam, // Notify: OleVariant EmptyParam, // Converter: OleVariant EmptyParam, // AddToMru: OleVariant EmptyParam, // Local: OleVariant EmptyParam, // CorruptLoad: OleVariant LCID); ExcelWorksheet1.ConnectTo(ExcelApplication1.ActiveSheet as _Worksheet); ExcelApplication1.Range['A1','A1'].Select; ExcelApplication1.ActiveCell.Value2 := ClientDataSet1ID.Value; ExcelApplication1.Range['B1','B1'].Select; ExcelApplication1.ActiveCell.Value2 := ClientDataSet1Name.Value; except end; end; |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Geht das nicht auch mit ADO?
|
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Ich weiß nicht, ob Ado Komponenten in der Starter Version dabei sind.
|
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Entschuldigung das ich mich so lange nicht gemeldet habe :|
@Spock Ist der Code im Großen und Ganzen Copy und Paste fähig? Aber vorab, danke ;) PS: ADO oder ähnlich hatte ich nicht in Delphi gefunden.. kann aber sein das ich nicht richtig nachgesehen habe |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Zitat:
(Das erinnert mich an Loriot in Papa ante Portas: Chef fragt: "... und wie gehts dem Sohn, kann er schon sitzen und sprechen"? Herr Klose (Loriot): "Mein Sohn ist 16. Er sitzt und spricht! :-) " Ich wollte aber nur mal ein kurzes Code Beispiel zeigen, wie man sich "manuell" bei Excel anmeldet und dort zwei Zellen füllt. Du solltest dich noch etwas in Excel Automation einlesen. Mein Codeschnipsel geht davon aus, dass es eine Datei eines bestimmten Namens in einem bestimmten Pfad gibt. Dann gibt es möglicherweise bessere / einfachere Möglichkeiten, wie man in eine Zelle schreibt. Ich selekte ja eine Range (von einer Zelle) und greife dann über ActiveCell zu. Es wäre aber schöner direkt in eine Zelle zu schreiben. Also von daher solltest du dich wie gesagt in Excel Automation einlesen. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
So, ich hab da mal etwas gefunden nur weis ich jetzt nicht ob das verwendbar ist ;)
Delphi-Quellcode:
unit DS2XML;
interface uses Classes, DB; procedure DatasetToXML(Dataset: TDataset; FileName: string); implementation uses SysUtils; var SourceBuffer: PChar; procedure WriteString(Stream: TFileStream; s: string); begin StrPCopy(SourceBuffer, s); Stream.Write(SourceBuffer[0], StrLen(SourceBuffer)); end; procedure WriteFileBegin(Stream: TFileStream; Dataset: TDataset); function XMLFieldType(fld: TField): string; begin case fld.DataType of ftString: Result := '"string" WIDTH="' + IntToStr(fld.Size) + '"'; ftSmallint: Result := '"i4"'; //?? ftInteger: Result := '"i4"'; ftWord: Result := '"i4"'; //?? ftBoolean: Result := '"boolean"'; ftAutoInc: Result := '"i4" SUBTYPE="Autoinc"'; ftFloat: Result := '"r8"'; ftCurrency: Result := '"r8" SUBTYPE="Money"'; ftBCD: Result := '"r8"'; //?? ftDate: Result := '"date"'; ftTime: Result := '"time"'; //?? ftDateTime: Result := '"datetime"'; else end; if fld.Required then Result := Result + ' required="true"'; if fld.Readonly then Result := Result + ' readonly="true"'; end; var i: Integer; begin WriteString(Stream, '<?xml version="1.0" standalone="yes"?><!-- Generated by SMExport --> ' + '<DATAPACKET Version="2.0">'); WriteString(Stream, '<METADATA><FIELDS>'); {write th metadata} with Dataset do for i := 0 to FieldCount-1 do begin WriteString(Stream, '<FIELD attrname="' + Fields[i].FieldName + '" fieldtype=' + XMLFieldType(Fields[i]) + '/>'); end; WriteString(Stream, '</FIELDS>'); WriteString(Stream, '<PARAMS DEFAULT_ORDER="1" PRIMARY_KEY="1" LCID="1033"/>'); WriteString(Stream, '</METADATA><ROWDATA>'); end; procedure WriteFileEnd(Stream: TFileStream); begin WriteString(Stream, '</ROWDATA></DATAPACKET>'); end; procedure WriteRowStart(Stream: TFileStream; IsAddedTitle: Boolean); begin if not IsAddedTitle then WriteString(Stream, '<ROW'); end; procedure WriteRowEnd(Stream: TFileStream; IsAddedTitle: Boolean); begin if not IsAddedTitle then WriteString(Stream, '/>'); end; procedure WriteData(Stream: TFileStream; fld: TField; AString: ShortString); begin if Assigned(fld) and (AString <> '') then WriteString(Stream, ' ' + fld.FieldName + '="' + AString + '"'); end; function GetFieldStr(Field: TField): string; function GetDig(i, j: Word): string; begin Result := IntToStr(i); while (Length(Result) < j) do Result := '0' + Result; end; var Hour, Min, Sec, MSec: Word; begin case Field.DataType of ftBoolean: Result := UpperCase(Field.AsString); ftDate: Result := FormatDateTime('yyyymmdd', Field.AsDateTime); ftTime: Result := FormatDateTime('hhnnss', Field.AsDateTime); ftDateTime: begin Result := FormatDateTime('yyyymmdd', Field.AsDateTime); DecodeTime(Field.AsDateTime, Hour, Min, Sec, MSec); if (Hour <> 0) or (Min <> 0) or (Sec <> 0) or (MSec <> 0) then Result := Result + 'T' + GetDig(Hour, 2) + ':' + GetDig(Min, 2) + ':' + GetDig(Sec, 2) + GetDig(MSec, 3); end; else Result := Field.AsString; end; end; procedure DatasetToXML(Dataset: TDataset; FileName: string); var Stream: TFileStream; bkmark: TBookmark; i: Integer; begin Stream := TFileStream.Create(FileName, fmCreate); SourceBuffer := StrAlloc(1024); WriteFileBegin(Stream, Dataset); with DataSet do begin DisableControls; bkmark := GetBookmark; First; {write a title row} WriteRowStart(Stream, True); for i := 0 to FieldCount-1 do WriteData(Stream, nil, Fields[i].DisplayLabel); {write the end of row} WriteRowEnd(Stream, True); while (not EOF) do begin WriteRowStart(Stream, False); for i := 0 to FieldCount-1 do WriteData(Stream, Fields[i], GetFieldStr(Fields[i])); {write the end of row} WriteRowEnd(Stream, False); Next; end; GotoBookmark(bkmark); EnableControls; end; WriteFileEnd(Stream); Stream.Free; StrDispose(SourceBuffer); end; end. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Noch einmal eine ander Frage. Wie kann ich schaffen das man in der Tabelle zwei spalten addiert.
Wie geht das? Oder geht das überhaupt? Und wie könnte ich es machen, wegen dem Drucken? danke Luki :) |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Neue Frage -> Neuer Thread
Allerdings ist die Antwort hier auch schon gefallen (wenn ich die Frage richtig deute) Also bitte nochmal konkreter formuliert in einem neuen Thread |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Ok ;)
Edit: Ich habe mir eben noch einmal den Thread angesehen und habe das von MrSpock mit dem Reportgenerator gesehen und auch gegooglet nur sagt mir das was Google mir ausspuckt nichts oder wie ich da auch was installieren kann... |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Was hast du denn herausgefunden?
Ich nutze zum Beispiel ![]() |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Generell bevor ich etwas falsches installiere und Delphi geht dann nicht mehr, deshalb habe ich gerade ein mulmiges Gefühl ;)
Und es sollte möglicherweise kostenlos sein.. |
AW: MyBase | Daten zur Tabelle hinzufügen und in der Tabelle suchen
Ich kenne kein Reporting Tool, welches kostenlos verfügbar ist und unter XE5 Starter läuft. Die Freereport Komponenten funktionieren nur bis D2006 (oder so).
Du hast oben ein XML Export abgedruckt. Kannst du zwar grundsätzlich verwenden. Nur hatte ich dich so verstanden, dass du die Daten aus MyBase nach Excel exportieren willst. Dazu habe ich ein Codeschnipsel angehängt, welches zeigt, wie das prinzipiell manuell gemacht werden kann. Da solltest du noch ein bisschen im Forum oder allgemein im Internet suchen, wie der Export nach Excel funktioniert. Von dort aus kannst du dann auch drucken. |
Alle Zeitangaben in WEZ +1. Es ist jetzt 00:11 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