Procházet zdrojové kódy

Cosmetic; remark that TSQLScript will fail on FPC < 2.7.1 if you have parameters with : in your stored procedure text... :(

Reinier Olislagers před 11 roky
rodič
revize
551c7fb497
4 změnil soubory, kde provedl 61 přidání a 42 odebrání
  1. 14 14
      createdb.lfm
  2. 26 24
      createdb.lrs
  3. 0 1
      main.pas
  4. 21 3
      querywindow.pas

+ 14 - 14
createdb.lfm

@@ -9,42 +9,42 @@ object fmCreateDB: TfmCreateDB
   ClientWidth = 481
   Color = clWhite
   Position = poScreenCenter
-  LCLVersion = '1.0.4.0'
+  LCLVersion = '1.2.2.0'
   object Label1: TLabel
     Left = 11
-    Height = 18
+    Height = 13
     Top = 37
-    Width = 112
+    Width = 82
     Caption = 'Server:Database'
     ParentColor = False
   end
   object Label2: TLabel
     Left = 11
-    Height = 18
+    Height = 13
     Top = 88
-    Width = 72
+    Width = 51
     Caption = 'User name'
     ParentColor = False
   end
   object Label3: TLabel
     Left = 11
-    Height = 18
+    Height = 13
     Top = 136
-    Width = 67
+    Width = 46
     Caption = 'Password'
     ParentColor = False
   end
   object Label4: TLabel
     Left = 11
-    Height = 18
+    Height = 13
     Top = 174
-    Width = 53
+    Width = 38
     Caption = 'Charset'
     ParentColor = False
   end
   object edNewDatabase: TEdit
     Left = 128
-    Height = 27
+    Height = 21
     Top = 35
     Width = 248
     TabOrder = 0
@@ -60,14 +60,14 @@ object fmCreateDB: TfmCreateDB
   end
   object edUserName: TEdit
     Left = 87
-    Height = 27
+    Height = 21
     Top = 81
     Width = 129
     TabOrder = 2
   end
   object edPassword: TEdit
     Left = 87
-    Height = 27
+    Height = 21
     Top = 128
     Width = 129
     EchoMode = emPassword
@@ -175,10 +175,10 @@ object fmCreateDB: TfmCreateDB
   end
   object cbCharset: TComboBox
     Left = 87
-    Height = 29
+    Height = 21
     Top = 170
     Width = 124
-    ItemHeight = 0
+    ItemHeight = 13
     ItemIndex = 0
     Items.Strings = (
       'NONE'

+ 26 - 24
createdb.lrs

@@ -1,21 +1,23 @@
+{ This is an automatically generated lazarus resource file }
+
 LazarusResources.Add('TfmCreateDB','FORMDATA',[
   'TPF0'#11'TfmCreateDB'#10'fmCreateDB'#4'Left'#3#151#1#6'Height'#3#11#1#3'Top'
   +#3#201#0#5'Width'#3#225#1#13'ActiveControl'#7#8'btBrowse'#7'Caption'#6#28'Cr'
   +'eate new Firebird Database'#12'ClientHeight'#3#11#1#11'ClientWidth'#3#225#1
   +#5'Color'#7#7'clWhite'#8'Position'#7#14'poScreenCenter'#10'LCLVersion'#6#7'1'
-  +'.0.4.0'#0#6'TLabel'#6'Label1'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'%'#5'Wid'
-  +'th'#2'p'#7'Caption'#6#15'Server:Database'#11'ParentColor'#8#0#0#6'TLabel'#6
-  +'Label2'#4'Left'#2#11#6'Height'#2#18#3'Top'#2'X'#5'Width'#2'H'#7'Caption'#6#9
+  +'.2.2.0'#0#6'TLabel'#6'Label1'#4'Left'#2#11#6'Height'#2#13#3'Top'#2'%'#5'Wid'
+  +'th'#2'R'#7'Caption'#6#15'Server:Database'#11'ParentColor'#8#0#0#6'TLabel'#6
+  +'Label2'#4'Left'#2#11#6'Height'#2#13#3'Top'#2'X'#5'Width'#2'3'#7'Caption'#6#9
   +'User name'#11'ParentColor'#8#0#0#6'TLabel'#6'Label3'#4'Left'#2#11#6'Height'
-  +#2#18#3'Top'#3#136#0#5'Width'#2'C'#7'Caption'#6#8'Password'#11'ParentColor'#8
-  +#0#0#6'TLabel'#6'Label4'#4'Left'#2#11#6'Height'#2#18#3'Top'#3#174#0#5'Width'
-  +#2'5'#7'Caption'#6#7'Charset'#11'ParentColor'#8#0#0#5'TEdit'#13'edNewDatabas'
-  +'e'#4'Left'#3#128#0#6'Height'#2#27#3'Top'#2'#'#5'Width'#3#248#0#8'TabOrder'#2
+  +#2#13#3'Top'#3#136#0#5'Width'#2'.'#7'Caption'#6#8'Password'#11'ParentColor'#8
+  +#0#0#6'TLabel'#6'Label4'#4'Left'#2#11#6'Height'#2#13#3'Top'#3#174#0#5'Width'
+  +#2'&'#7'Caption'#6#7'Charset'#11'ParentColor'#8#0#0#5'TEdit'#13'edNewDatabas'
+  +'e'#4'Left'#3#128#0#6'Height'#2#21#3'Top'#2'#'#5'Width'#3#248#0#8'TabOrder'#2
   +#0#0#0#7'TButton'#8'btBrowse'#4'Left'#3'}'#1#6'Height'#2#25#3'Top'#2'"'#5'Wi'
   +'dth'#2#27#7'Caption'#6#3'...'#7'OnClick'#7#13'btBrowseClick'#8'TabOrder'#2#1
-  +#0#0#5'TEdit'#10'edUserName'#4'Left'#2'W'#6'Height'#2#27#3'Top'#2'Q'#5'Width'
+  +#0#0#5'TEdit'#10'edUserName'#4'Left'#2'W'#6'Height'#2#21#3'Top'#2'Q'#5'Width'
   +#3#129#0#8'TabOrder'#2#2#0#0#5'TEdit'#10'edPassword'#4'Left'#2'W'#6'Height'#2
-  +#27#3'Top'#3#128#0#5'Width'#3#129#0#8'EchoMode'#7#10'emPassword'#12'Password'
+  +#21#3'Top'#3#128#0#5'Width'#3#129#0#8'EchoMode'#7#10'emPassword'#12'Password'
   +'Char'#6#1'-'#8'TabOrder'#2#3#0#0#7'TBitBtn'#8'bbCreate'#4'Left'#2#11#6'Heig'
   +'ht'#2'#'#3'Top'#3#215#0#5'Width'#2'`'#7'Caption'#6#6'Create'#5'Color'#4#219
   +#242#247#0#7'Default'#9#10'Glyph.Data'#10':'#9#0#0'6'#9#0#0'BM6'#9#0#0#0#0#0
@@ -125,21 +127,21 @@ LazarusResources.Add('TfmCreateDB','FORMDATA',[
   +#2#4#0#0#7'TBitBtn'#8'bbCancel'#4'Left'#2'x'#6'Height'#2'#'#3'Top'#3#215#0#5
   +'Width'#2'['#6'Cancel'#9#7'Caption'#6#6'Cancel'#5'Color'#4#219#242#247#0#4'K'
   +'ind'#7#8'bkCancel'#11'ModalResult'#2#2#8'TabOrder'#2#5#0#0#9'TComboBox'#9'c'
-  +'bCharset'#4'Left'#2'W'#6'Height'#2#29#3'Top'#3#170#0#5'Width'#2'|'#10'ItemH'
-  +'eight'#2#0#9'ItemIndex'#2#0#13'Items.Strings'#1#6#4'NONE'#6#4'TRIM'#6#5'ASC'
-  ,'II'#6#5'BIG_5'#6#6'CP943C'#6#4'CYRL'#6#6'DOS437'#6#6'DOS737'#6#6'DOS775'#6#6
-  +'DOS850'#6#6'DOS852'#6#6'DOS857'#6#6'DOS858'#6#6'DOS860'#6#6'DOS861'#6#6'DOS'
-  +'862'#6#6'DOS863'#6#6'DOS864'#6#6'DOS865'#6#6'DOS866'#6#6'DOS869'#6#9'EUCJ_0'
-  +'208'#6#3'GBK'#6#7'GB_2312'#6#9'ISO8859_1'#6#10'ISO8859_13'#6#9'ISO8859_2'#6
-  +#9'ISO8859_3'#6#9'ISO8859_4'#6#9'ISO8859_5'#6#9'ISO8859_6'#6#9'ISO8859_7'#6#9
-  +'ISO8859_8'#6#9'ISO8859_9'#6#5'KOI8R'#6#5'KOI8U'#6#8'KSC_5601'#6#4'NEXT'#6#6
-  +'OCTETS'#6#9'SJIS_0208'#6#6'TIS620'#6#11'UNICODE_FSS'#6#4'UTF8'#6#7'WIN1250'
-  +#6#7'WIN1251'#6#7'WIN1252'#6#7'WIN1253'#6#7'WIN1254'#6#7'WIN1255'#6#7'WIN125'
-  +'6'#6#7'WIN1257'#6#7'WIN1258'#0#8'TabOrder'#2#6#4'Text'#6#4'NONE'#0#0#6'TIma'
-  +'ge'#6'Image1'#4'Left'#3#128#1#6'Height'#2'L'#3'Top'#2'`'#5'Width'#2'O'#12'P'
-  +'icture.Data'#10'@'#21#0#0#23'TPortableNetworkGraphic$'#21#0#0#137'PNG'#13#10
-  +#26#10#0#0#0#13'IHDR'#0#0#0'H'#0#0#0'H'#8#6#0#0#0'U'#237#179'G'#0#0#20#235'I'
-  +'DATx'#218#237#156#9'XT'#229#26#128#167#220'+'#181#204#140'L'#19#211#220#208
+  +'bCharset'#4'Left'#2'W'#6'Height'#2#21#3'Top'#3#170#0#5'Width'#2'|'#10'ItemH'
+  +'eight'#2#13#9'ItemIndex'#2#0#13'Items.Strings'#1#6#4'NONE'#6#4'TRIM'#6#5'AS'
+  ,'CII'#6#5'BIG_5'#6#6'CP943C'#6#4'CYRL'#6#6'DOS437'#6#6'DOS737'#6#6'DOS775'#6
+  +#6'DOS850'#6#6'DOS852'#6#6'DOS857'#6#6'DOS858'#6#6'DOS860'#6#6'DOS861'#6#6'D'
+  +'OS862'#6#6'DOS863'#6#6'DOS864'#6#6'DOS865'#6#6'DOS866'#6#6'DOS869'#6#9'EUCJ'
+  +'_0208'#6#3'GBK'#6#7'GB_2312'#6#9'ISO8859_1'#6#10'ISO8859_13'#6#9'ISO8859_2'
+  +#6#9'ISO8859_3'#6#9'ISO8859_4'#6#9'ISO8859_5'#6#9'ISO8859_6'#6#9'ISO8859_7'#6
+  +#9'ISO8859_8'#6#9'ISO8859_9'#6#5'KOI8R'#6#5'KOI8U'#6#8'KSC_5601'#6#4'NEXT'#6
+  +#6'OCTETS'#6#9'SJIS_0208'#6#6'TIS620'#6#11'UNICODE_FSS'#6#4'UTF8'#6#7'WIN125'
+  +'0'#6#7'WIN1251'#6#7'WIN1252'#6#7'WIN1253'#6#7'WIN1254'#6#7'WIN1255'#6#7'WIN'
+  +'1256'#6#7'WIN1257'#6#7'WIN1258'#0#8'TabOrder'#2#6#4'Text'#6#4'NONE'#0#0#6'T'
+  +'Image'#6'Image1'#4'Left'#3#128#1#6'Height'#2'L'#3'Top'#2'`'#5'Width'#2'O'#12
+  +'Picture.Data'#10'@'#21#0#0#23'TPortableNetworkGraphic$'#21#0#0#137'PNG'#13
+  +#10#26#10#0#0#0#13'IHDR'#0#0#0'H'#0#0#0'H'#8#6#0#0#0'U'#237#179'G'#0#0#20#235
+  +'IDATx'#218#237#156#9'XT'#229#26#128#167#220'+'#181#204#140'L'#19#211#220#208
   +'L'#201#18#175'&j.h '#179#207#0'*'#162#162#178'(("'#224#2#200#170#162#8#178
   +');'#178'*'#184'A'#2'"'#251#142#8#130#162#130#128#2#226#138#213#189#215#178
   +#216#190#251'}'#135#193#192#132'X'#6#141#231#185'='#207#223#204#156#145#249

+ 0 - 1
main.pas

@@ -803,7 +803,6 @@ begin
     Part:= StringReplace(Part, #10, ' ', [rfReplaceAll]);
 
     QWindow.meQuery.Lines.Add(Part);
-
   until AQueryText = '';
 end;
 

+ 21 - 3
querywindow.pas

@@ -219,6 +219,7 @@ type
     // Their memory will be freed in code when no longer used
     procedure AddResultControl(ParentControl: TObject; AControl: TObject);
     procedure NewApplyButton(var Pan: TPanel; var ATab: TTabSheet);
+    // Free up memory for controls
     procedure RemoveControls;
     function FindSqlQuery: TSqlQuery;
     function GetSQLType(Query: string; var Command: string): string;
@@ -1077,6 +1078,8 @@ begin
     aSqlQuery.DataBase:= ibConnection;
     aSqlQuery.Transaction:= fSqlTrans;
     aSqlQuery.AfterScroll:= @QueryAfterScroll;
+    // Here and in other cases, the object is added to the list of
+    // programmatically maintained objects and freed programmatically
     AddResultControl(ATab, aSqlQuery);
     aSqlQuery.AfterPost:= @FinishCellEditing;
     aSqlQuery.Tag:= ATab.TabIndex;
@@ -1147,8 +1150,6 @@ begin
       end;
       qtScript: // Script
       begin
-        //todo: strip out this create stuff; pass existing object to function.
-        // makes it easier to understand who is responsible for clearing up
         aSQLScript:= TSQLScript.Create(nil);
         aSQLScript.DataBase:= ibConnection;
         aSQLScript.Transaction:= fSqlTrans;
@@ -1423,6 +1424,23 @@ var
   meResult: TMemo;
   ATab: TTabSheet;
 begin
+{ Note regarding SQLScript bug in FPC <= 2.7.1:
+If parameters are used in the script e.g. as in the sample EMPLOYEE.FDB
+CREATE Procedure DELETE_EMPLOYEE
+...
+SELECT count(po_number)
+FROM sales
+WHERE sales_rep = :emp_num
+INTO :any_sales;
+you may get this error
+: PrepareStatement :
+-Dynamic SQL Error
+-SQL error code = -104
+-Token unknown - line 19, column 7
+-?
+because the TSQLScript tries to process parameters as if they were sqldb
+parameters
+}
   StartTime:= Now;
   ATab:= nil;
   SQLScript:= nil;
@@ -1619,7 +1637,7 @@ begin
       Break;
     end
     else
-    //todo: perhaps better test for set termin trim(querylist[i] instead
+    //todo: perhaps better test for set term in trim(querylist[i] instead
     if (QueryType = qtScript) and
       ((i > SecondRealStart) and (Pos('setterm', LowerCase(StringReplace(QueryList[i],
       ' ', '', [rfReplaceAll]))) > 0))