tested.pp 6.1 KB

123456789101112131415161718192021222324252627282930313233343536373839404142434445464748495051525354555657585960616263646566676869707172737475767778798081828384858687888990919293949596979899100101102103104105106107108109110111112113114115116117118119120121122123124125126127128129130131132133134135136137138139140141142143144145146147148149150151152153154155156157158159160161162163164165166167168169170171172173174175176177178179180181182183184185186187188189190191192193194195196197198199200201202203204205206207208209210211212213214215216217218219220221222223224225226227228229230231232233234235
  1. {
  2. This file is part of the Free Pascal run time library.
  3. Copyright (c) 1999-2000 by Michael Van Canneyt, member of the
  4. Free Pascal development team
  5. Tests the TDDGDataset component.
  6. See the file COPYING.FPC, included in this distribution,
  7. for details about the copyright.
  8. This program is distributed in the hope that it will be useful,
  9. but WITHOUT ANY WARRANTY; without even the implied warranty of
  10. MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE.
  11. **********************************************************************}
  12. program testds;
  13. uses db,ddg_ds,sysutils;
  14. Procedure Log(Const Msg : String);
  15. begin
  16. Writeln(Msg);
  17. end;
  18. Procedure DumpFieldDef(F : TfieldDef);
  19. begin
  20. With F do
  21. begin
  22. Writeln ('Name : ',Name);
  23. Writeln ('FieldNo : ',FieldNo);
  24. Writeln ('Size : ',Size);
  25. Writeln ('FieldClass : ',FieldClass.ClassName);
  26. Writeln ('Required : ',required);
  27. Writeln ('Precision : ',Precision);
  28. Writeln ('DataType : ',FieldTypeNames[DataType]);
  29. Writeln ('InternalCalcField : ',Internalcalcfield);
  30. end;
  31. end;
  32. Procedure DumpField(F : Tfield);
  33. begin
  34. With F do
  35. begin
  36. writeln ('-------------------------------------');
  37. Writeln ('FieldName : ',FieldName);
  38. Writeln ('FieldNo : ',FieldNo);
  39. Writeln ('Index : ',Index);
  40. Writeln ('DataSize : ',DataSize);
  41. Writeln ('Size : ',Size);
  42. Writeln ('DataType : ',FieldTypeNames[DataType]);
  43. Writeln ('Class : ',ClassName);
  44. Writeln ('Required : ',required);
  45. Writeln ('ReadOnly : ',ReadOnly);
  46. Writeln ('Visible : ',Visible);
  47. end;
  48. end;
  49. Procedure DumpFieldData (F : TField);
  50. begin
  51. With F Do
  52. begin
  53. Writeln ('Field : ',FieldName);
  54. Writeln ('Data type : ',FieldTypeNames[DataType]);
  55. Writeln ('As String : ',Asstring);
  56. Case Datatype of
  57. ftSmallint, ftInteger, ftWord : Writeln ('As longint : ',AsLongint);
  58. ftBoolean : Writeln ('As Boolean : ',AsBoolean);
  59. ftFloat : Writeln ('As Float : ',AsFloat);
  60. ftDate, ftTime, ftDateTime : Writeln ('As DateTime : ',DateTimeToStr(AsDateTime));
  61. end;
  62. end;
  63. end;
  64. procedure DumpFields (DS : TDataset);
  65. Var I : longint;
  66. begin
  67. With DS do
  68. begin
  69. Writeln('Dumping fields');
  70. For I:=0 to FieldCount-1 do
  71. DumpFieldData(Fields[i]);
  72. end;
  73. end;
  74. Var
  75. Data : TDDGdataset;
  76. I,Count : longint;
  77. Bookie : TBookMarkStr;
  78. Procedure ScrollForward;
  79. begin
  80. Writeln ('Browsing Forward:');
  81. Writeln ('------------------');
  82. With Data do
  83. While NOT EOF do
  84. begin
  85. Writeln ('================================================');
  86. For I:=0 to FieldCount-1 do
  87. DumpFieldData(Fields[I]);
  88. Next;
  89. end;
  90. end;
  91. Procedure ScrollBackWard;
  92. begin
  93. Writeln ('Browsing Backward:');
  94. Writeln ('-------------------');
  95. With Data do
  96. While NOT BOF do
  97. begin
  98. For I:=0 to FieldCount-1 do
  99. DumpFieldData(Fields[I]);
  100. Prior;
  101. end;
  102. end;
  103. begin
  104. if paramcount<>1 then
  105. begin
  106. Writeln ('Usage : testds tablename');
  107. Halt(1);
  108. end;
  109. Log ('Creating Dataset');
  110. Data:=TDDGDataset.Create(Nil);
  111. With Data do
  112. begin
  113. Log('Setting Tablename');
  114. TableName:=Paramstr(1);
  115. Log('Opening Dataset');
  116. Open;
  117. Log('Dumping fielddefs : ');
  118. Writeln ('Fielddefs count : ',FieldDefs.Count);
  119. For I:=0 to FieldDefs.Count-1 do
  120. DumpFieldDef(FieldDefs.Items[i]);
  121. Writeln ('Fields count : ',FieldCount);
  122. For I:=0 to FieldCount-1 do
  123. DumpField(Fields[i]);
  124. ScrollForward;
  125. ScrollBackWard;
  126. Writeln ('Doing append');
  127. writeln ('------------');
  128. Append;
  129. FieldByName('Name').AsString:='AppendName';
  130. FieldByName('Height').AsFloat:=9.99E9;
  131. FieldByName('LongField').AsLongInt:=999;
  132. FieldByName('ShoeSize').AsLongInt:=999;
  133. FieldByName('WordField').AsLongInt:=999;
  134. FieldByName('BooleanField').AsBoolean:=False;
  135. FieldByName('DateTimeField').AsDateTime:=Now;
  136. FieldByName('DateField').AsDateTime:=Date;
  137. FieldByName('TimeField').AsDateTime:=Time;
  138. Writeln ('End of append, going to post');
  139. Post;
  140. DumpFields(Data);
  141. Writeln ('Doing Last');
  142. Writeln ('----------');
  143. Last;
  144. DumpFields(Data);
  145. Writeln ('Doing Prior');
  146. Writeln ('----------');
  147. Prior;
  148. DumpFields(Data);
  149. Writeln ('Doing Insert at position 8');
  150. writeln ('--------------------------');
  151. first;
  152. for I:=1 to 7 do
  153. Next;
  154. Insert;
  155. FieldByName('Name').AsString:='Insertname';
  156. FieldByName('Height').AsFloat:=8.99E8;
  157. FieldByName('LongField').AsLongInt:=888;
  158. FieldByName('ShoeSize').AsLongInt:=888;
  159. FieldByName('WordField').AsLongInt:=888;
  160. FieldByName('BooleanField').AsBoolean:=True;
  161. FieldByName('DateTimeField').AsDateTime:=Now;
  162. FieldByName('DateField').AsDateTime:=Date;
  163. FieldByName('TimeField').AsDateTime:=Time;
  164. Post;
  165. Writeln ('Doing field dump');
  166. writeln ('----------------');
  167. DumpFields(Data);
  168. Writeln ('Doing Prior');
  169. Writeln ('-----------');
  170. Prior;
  171. DumpFields(Data);
  172. Writeln ('Doing Next');
  173. Writeln ('----------');
  174. Next;
  175. DumpFields(Data);
  176. Writeln ('Doing Next');
  177. Writeln ('----------');
  178. Next;
  179. DumpFields(Data);
  180. Writeln ('Doing Edit at position 5');
  181. writeln ('-------------------------');
  182. first;
  183. for I:=1 to 4 do
  184. Next;
  185. Edit;
  186. FieldByName('Name').AsString:='Editname';
  187. FieldByName('Height').AsFloat:=3.33E3;
  188. FieldByName('LongField').AsLongInt:=333;
  189. FieldByName('ShoeSize').AsLongInt:=333;
  190. FieldByName('WordField').AsLongInt:=333;
  191. FieldByName('BooleanField').AsBoolean:=False;
  192. FieldByName('DateTimeField').AsDateTime:=Now;
  193. FieldByName('DateField').AsDateTime:=Date;
  194. FieldByName('TimeField').AsDateTime:=Time;
  195. Post;
  196. Writeln ('Doing field dump');
  197. writeln ('----------------');
  198. DumpFields(Data);
  199. Writeln ('Doing Prior');
  200. Writeln ('-----------');
  201. Prior;
  202. DumpFields(Data);
  203. Writeln ('Doing Next');
  204. Writeln ('----------');
  205. Next;
  206. DumpFields(Data);
  207. Writeln ('Doing Next');
  208. Writeln ('----------');
  209. Next;
  210. DumpFields(Data);
  211. Writeln ('Closing.');
  212. Close;
  213. end;
  214. end.