View Issue Details
| ID | Project | Category | View Status | Date Submitted | Last Update |
|---|---|---|---|---|---|
| 0003915 | JEDI VCL | 00 JVCL Components | public | 2006-09-19 07:58 | 2007-01-04 05:33 |
| Reporter | ZENsan | Assigned To | obones | ||
| Priority | normal | Severity | major | Reproducibility | always |
| Status | resolved | Resolution | fixed | ||
| Product Version | Daily / GIT | ||||
| Target Version | Fixed in Version | 3.30 | |||
| Summary | 0003915: TJvCustomDBGridExport.GetFieldValue crashes export DoExport function | ||||
| Description | TJvCustomDBGridExport.GetFieldValue crashes export DoExport function. Also there is one moment: Result := True; //!!! Here result id true FRunningInstance := True; try // get running instance FWord := GetActiveOleObject(cWordApplication); except FRunningInstance := False; try // create new FWord := CreateOleObject(cWordApplication); except FWord := Unassigned; HandleException; // raise EJvExportDBGridException.Create(RsNoWordApplication); end; end; if VarIsEmpty(FWord) then Exit;//!!!And here need to set Result to false This moment is in all DoExport functions. | ||||
| Additional Information | And the second problem is that it will be better to replace GetFieldValue with this function: function TJvCustomDBGridExport.GetFieldValue(const Field: TField): Widestring; begin if Assigned(Field.OnGetText) and FUseFieldGetText then begin Result := ''; Field.OnGetText(Field, Result, True); end else begin Result := Field.AsWidestring; {Here was Field.Value, but there will be error if Fiels is ftWideMemo or Another field that is ancestor of TMemoField}Conversion to Widestring is more safe - and more usefull, because in Word and Excel we will not lose any Unicde data} end; end; | ||||
| Tags | No tags attached. | ||||
|
|
Where Field.AsWidestring is better to select type of field.. Only when FieldType<>ftInteger,ftFloat... |
|
|
This variant of implmenetation I think is better, because when exporting columns into excel - numbers are not stored as text. function TJvCustomDBGridExport.GetFieldValue(const Field: TField): Variant; var Str: String; begin if Assigned(Field.OnGetText) and FUseFieldGetText then begin Result := ''; Field.OnGetText(Field, Str, True); Result := Str; end else Result := Field.Value; end; |
|
2006-09-26 00:51
|
JvDBGridExport.zip (7,803 bytes) |
|
|
In uploaded source there is some correction of DoExport function. Beacause in the begining Result=True and then after program determines that Word or Excel is not available - There was an Exit, but not Result := False and then Exit.. |
|
|
Please provide a patch file, it makes integration easier. |
|
|
Can you tel me some Windows utility to generate patch file? Code Fusion 3.0, PatchWise 3.28 I think is not good for this.. |
|
|
http://homepages.borland.com/jedi/wiki/index.php?title=Create_a_patch_file And if you are not already using TortoiseSVN: http://homepages.borland.com/jedi/wiki/index.php?title=Repository |
|
2006-09-26 07:19
|
JvDBGridExport_patch.zip (22,512 bytes) |
|
|
Does not look like you used the method described in the wiki, with TortoiseSVN, the patch file is not in the correct format and thus unusable. |
|
|
I have used WinMerge utility.. Ok I will try to install Tortoise SVN |
|
|
Sorry, but I can't understand how to create patch file with that Tortoise SVN.. I installed it, defined respoitory root and added JVCL folder to it, but how to create atch I don't know. I have no time to investigate this software, because I am very heavy loaded at work :(. |
|
|
It's all explained in the links I gave you above. Once you have retrieved the repository via Tortoise, creating the patch is as simple as rigthclicking on the file and choosing "Create patch". |
|
2006-10-07 09:25
|
JvDBGridExport.patch (2,050 bytes)
Index: JvDBGridExport.pas
===================================================================
--- JvDBGridExport.pas (revision 10965)
+++ JvDBGridExport.pas (working copy)
@@ -97,7 +97,7 @@
procedure DoSave; virtual;
procedure DoClose; virtual; abstract;
procedure Notification(AComponent: TComponent; Operation: TOperation); override;
- function GetFieldValue(const Field: TField): string;
+ function GetFieldValue(const Field: TField): Variant;
public
constructor Create(AOwner: TComponent); override;
function ExportGrid: Boolean;
@@ -334,17 +334,18 @@
DoClose;
end;
-function TJvCustomDBGridExport.GetFieldValue(const Field: TField): string;
+function TJvCustomDBGridExport.GetFieldValue(const Field: TField): Variant;
+var
+ Str: String;
begin
if Assigned(Field.OnGetText) and FUseFieldGetText then
begin
Result := '';
- Field.OnGetText(Field, Result, True);
+ Field.OnGetText(Field, Str, True);
+ Result := Str;
end
else
- begin
- Result := VarToStr(Field.Value);
- end;
+ Result := Field.Value;
end;
procedure TJvCustomDBGridExport.HandleException;
@@ -422,7 +423,10 @@
end;
if VarIsEmpty(FWord) then
- Exit;
+ begin
+ Result := False;
+ Exit;
+ end;
try
if not FRunningInstance then
@@ -502,6 +506,7 @@
lTable.UpdateAutoFormat;
except
HandleException;
+ Result := False;
end;
end;
@@ -589,7 +594,10 @@
end;
if VarIsEmpty(FExcel) then
- Exit;
+ begin
+ Result := False;
+ Exit;
+ end;
try
if not FRunningInstance then
FExcel.Visible := Visible;
@@ -669,6 +677,7 @@
end;
except
HandleException;
+ Result := False;
end;
end;
@@ -942,6 +951,7 @@
end;
except
HandleException;
+ Result := False;
end;
end;
@@ -1072,6 +1082,7 @@
end;
except
HandleException;
+ result := False;
end;
end;
@@ -1196,6 +1207,7 @@
end;
except
HandleException;
+ Result := False;
end;
end;
|
|
|
Problem was, because I didn't completed checkout - so Create patch option was unavailable. This patch is with today's checkout. |
|
|
May be I need to correct something? |
|
|
Thanks, your patch is now in SVN. Sorry for the delay. |
| Date Modified | Username | Field | Change |
|---|---|---|---|
| 2006-09-19 07:58 | ZENsan | New Issue | |
| 2006-09-20 03:04 | ZENsan | Note Added: 0010148 | |
| 2006-09-26 00:47 | ZENsan | Note Added: 0010177 | |
| 2006-09-26 00:51 | ZENsan | File Added: JvDBGridExport.zip | |
| 2006-09-26 06:22 | ZENsan | Note Added: 0010183 | |
| 2006-09-26 06:27 | obones | Note Added: 0010184 | |
| 2006-09-26 06:37 | ZENsan | Note Added: 0010185 | |
| 2006-09-26 06:42 | ZENsan | Note Edited: 0010185 | |
| 2006-09-26 06:52 | obones | Note Added: 0010186 | |
| 2006-09-26 07:19 | ZENsan | File Added: JvDBGridExport_patch.zip | |
| 2006-09-29 06:51 | obones | Note Added: 0010242 | |
| 2006-09-29 06:51 | obones | Status | new => feedback |
| 2006-09-29 08:00 | ZENsan | Note Added: 0010254 | |
| 2006-10-05 10:39 | ZENsan | Note Added: 0010291 | |
| 2006-10-06 01:37 | obones | Note Added: 0010295 | |
| 2006-10-07 09:25 | ZENsan | File Added: JvDBGridExport.patch | |
| 2006-10-07 09:26 | ZENsan | Note Added: 0010329 | |
| 2006-10-18 10:18 | ZENsan | Note Added: 0010372 | |
| 2007-01-04 05:32 | obones | Status | feedback => resolved |
| 2007-01-04 05:32 | obones | Fixed in Version | => Daily / SVN |
| 2007-01-04 05:32 | obones | Resolution | open => fixed |
| 2007-01-04 05:32 | obones | Assigned To | => obones |
| 2007-01-04 05:32 | obones | Note Added: 0010531 |