![]() |
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 22:00 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