Explorar o código

Validate New Table entries
modified: TurboBird.lpi
modified: newtable.pas

motaz %!s(int64=13) %!d(string=hai) anos
pai
achega
e4cf44bcc3
Modificáronse 2 ficheiros con 119 adicións e 71 borrados
  1. 51 51
      TurboBird.lpi
  2. 68 20
      newtable.pas

+ 51 - 51
TurboBird.lpi

@@ -60,7 +60,6 @@
         <Filename Value="TurboBird.lpr"/>
         <IsPartOfProject Value="True"/>
         <UnitName Value="TurboBird"/>
-        <IsVisibleTab Value="True"/>
         <EditorIndex Value="0"/>
         <WindowIndex Value="0"/>
         <TopLine Value="5"/>
@@ -198,10 +197,11 @@
         <ComponentName Value="fmNewTable"/>
         <ResourceBaseClass Value="Form"/>
         <UnitName Value="NewTable"/>
+        <IsVisibleTab Value="True"/>
         <EditorIndex Value="3"/>
         <WindowIndex Value="0"/>
-        <TopLine Value="79"/>
-        <CursorPos X="16" Y="85"/>
+        <TopLine Value="145"/>
+        <CursorPos X="24" Y="151"/>
         <UsageCount Value="200"/>
         <Loaded Value="True"/>
         <LoadedDesigner Value="True"/>
@@ -1006,100 +1006,100 @@
     </Units>
     <JumpHistory Count="30" HistoryIndex="29">
       <Position1>
-        <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="240" Column="3" TopLine="238"/>
       </Position1>
       <Position2>
-        <Filename Value="main.pas"/>
-        <Caret Line="19" Column="30" TopLine="1"/>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="118" Column="26" TopLine="109"/>
       </Position2>
       <Position3>
-        <Filename Value="main.pas"/>
-        <Caret Line="180" Column="36" TopLine="144"/>
+        <Filename Value="querywindow.pas"/>
+        <Caret Line="241" Column="3" TopLine="239"/>
       </Position3>
       <Position4>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="851" Column="29" TopLine="845"/>
+        <Caret Line="433" Column="24" TopLine="421"/>
       </Position4>
       <Position5>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="240" Column="3" TopLine="238"/>
+        <Caret Line="110" Column="22" TopLine="89"/>
       </Position5>
       <Position6>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="118" Column="26" TopLine="109"/>
+        <Caret Line="240" Column="3" TopLine="238"/>
       </Position6>
       <Position7>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="241" Column="3" TopLine="239"/>
+        <Caret Line="561" Column="1" TopLine="549"/>
       </Position7>
       <Position8>
         <Filename Value="querywindow.pas"/>
-        <Caret Line="433" Column="24" TopLine="421"/>
+        <Caret Line="562" Column="28" TopLine="531"/>
       </Position8>
       <Position9>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="110" Column="22" TopLine="89"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="1009" Column="22" TopLine="993"/>
       </Position9>
       <Position10>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="240" Column="3" TopLine="238"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="468" Column="1" TopLine="451"/>
       </Position10>
       <Position11>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="561" Column="1" TopLine="549"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="703" Column="25" TopLine="693"/>
       </Position11>
       <Position12>
-        <Filename Value="querywindow.pas"/>
-        <Caret Line="562" Column="28" TopLine="531"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1098" Column="1" TopLine="1061"/>
       </Position12>
       <Position13>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="1009" Column="22" TopLine="993"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position13>
       <Position14>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="468" Column="1" TopLine="451"/>
+        <Filename Value="main.pas"/>
+        <Caret Line="699" Column="3" TopLine="697"/>
       </Position14>
       <Position15>
         <Filename Value="comparison.pas"/>
-        <Caret Line="703" Column="25" TopLine="693"/>
+        <Caret Line="720" Column="41" TopLine="699"/>
       </Position15>
       <Position16>
         <Filename Value="main.pas"/>
-        <Caret Line="1098" Column="1" TopLine="1061"/>
+        <Caret Line="699" Column="3" TopLine="697"/>
       </Position16>
       <Position17>
-        <Filename Value="main.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="tablemanage.pas"/>
+        <Caret Line="406" Column="3" TopLine="402"/>
       </Position17>
       <Position18>
-        <Filename Value="main.pas"/>
-        <Caret Line="699" Column="3" TopLine="697"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="706" Column="22" TopLine="701"/>
       </Position18>
       <Position19>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="720" Column="41" TopLine="699"/>
-      </Position19>
-      <Position20>
         <Filename Value="main.pas"/>
         <Caret Line="699" Column="3" TopLine="697"/>
+      </Position19>
+      <Position20>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="1134" Column="32" TopLine="1131"/>
       </Position20>
       <Position21>
-        <Filename Value="tablemanage.pas"/>
-        <Caret Line="406" Column="3" TopLine="402"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="1" Column="1" TopLine="1"/>
       </Position21>
       <Position22>
         <Filename Value="comparison.pas"/>
-        <Caret Line="706" Column="22" TopLine="701"/>
+        <Caret Line="99" Column="36" TopLine="71"/>
       </Position22>
       <Position23>
-        <Filename Value="main.pas"/>
-        <Caret Line="699" Column="3" TopLine="697"/>
+        <Filename Value="comparison.pas"/>
+        <Caret Line="279" Column="17" TopLine="257"/>
       </Position23>
       <Position24>
         <Filename Value="comparison.pas"/>
-        <Caret Line="1134" Column="32" TopLine="1131"/>
+        <Caret Line="1144" Column="6" TopLine="1134"/>
       </Position24>
       <Position25>
         <Filename Value="comparison.pas"/>
@@ -1107,23 +1107,23 @@
       </Position25>
       <Position26>
         <Filename Value="comparison.pas"/>
-        <Caret Line="99" Column="36" TopLine="71"/>
+        <Caret Line="652" Column="25" TopLine="633"/>
       </Position26>
       <Position27>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="279" Column="17" TopLine="257"/>
+        <Filename Value="newtable.pas"/>
+        <Caret Line="37" Column="31" TopLine="13"/>
       </Position27>
       <Position28>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="1144" Column="6" TopLine="1134"/>
+        <Filename Value="newtable.pas"/>
+        <Caret Line="38" Column="38" TopLine="20"/>
       </Position28>
       <Position29>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="1" Column="1" TopLine="1"/>
+        <Filename Value="newtable.pas"/>
+        <Caret Line="171" Column="1" TopLine="145"/>
       </Position29>
       <Position30>
-        <Filename Value="comparison.pas"/>
-        <Caret Line="652" Column="25" TopLine="633"/>
+        <Filename Value="newtable.pas"/>
+        <Caret Line="203" Column="27" TopLine="188"/>
       </Position30>
     </JumpHistory>
   </ProjectOptions>

+ 68 - 20
newtable.pas

@@ -34,6 +34,8 @@ type
     procedure StringGrid1PickListSelect(Sender: TObject);
   private
     fdbIndex: Integer;
+    function Validate: Boolean;
+    function GetFieldsCount: Integer;
     { private declarations }
   public
     { public declarations }
@@ -140,6 +142,48 @@ begin
   end;
 end;
 
+function TfmNewTable.Validate: Boolean;
+var
+  i: Integer;
+begin
+  Result:= False;
+  if Trim(edNewTable.Text) = '' then
+    MessageDlg('Warning', 'You should enter new table name', mtWarning, [mbOk], 0)
+  else
+  if GetFieldsCount = 0 then
+    MessageDlg('Warning', 'You should enter fields', mtWarning, [mbOk], 0)
+  else
+  begin
+    Result:= True;
+    with StringGrid1 do
+    for i:= 1 to RowCount - 1 do
+    if (Trim(Cells[0, i]) <> '') and (Trim(Cells[1, i]) = '') then
+    begin
+      Result:= False;
+      MessageDlg('Warning', 'You should write field type for the column: ' + Cells[0, i], mtWarning, [mbOk], 0);
+    end
+    else
+    if (Trim(Cells[0, i]) = '') and (Trim(Cells[1, i]) <> '') then
+    begin
+      Result:= False;
+      MessageDlg('Warning', 'You should select field name for the column number ' + IntToStr(i), mtWarning, [mbOk], 0);
+    end;
+  end;
+
+end;
+
+function TfmNewTable.GetFieldsCount: Integer;
+var
+  i: Integer;
+begin
+  Result:= 0;
+  with StringGrid1 do
+  for i:= 1 to RowCount - 1 do
+  if Trim(Cells[0, i]) <> '' then
+    Inc(Result);
+
+end;
+
 
 procedure TfmNewTable.bbScriptClick(Sender: TObject);
 var
@@ -147,27 +191,31 @@ var
   KeyField: string;
   GeneratorName: string;
 begin
-  List:= TStringList.Create;
-  List.Text:= GenerateCreateSQL(KeyField, GeneratorName);
-  if cxCreateGen.Checked then
-  begin;
-    List.Add('');
-    List.Add('-- Generator');
-    List.Add('create generator ' + GeneratorName + ';');
-
-    List.Add('');
-    List.Add('-- Trigger');
-    List.Add('CREATE TRIGGER ' + GeneratorName + ' FOR ' + edNewTable.Text);
-    List.Add('ACTIVE BEFORE INSERT POSITION 0 ');
-    List.Add('AS BEGIN ');
-    List.Add('IF (NEW.' + KeyField + ' IS NULL OR NEW.' + KeyField + ' = 0) THEN ');
-    List.Add('  NEW.' + KeyField + ' = GEN_ID(' + GeneratorName + ', 1);');
-    List.Add('END;');
-  end;
+  if Validate then
+  begin
+    List:= TStringList.Create;
+    List.Text:= GenerateCreateSQL(KeyField, GeneratorName);
+    if cxCreateGen.Checked then
+    begin;
+      List.Add('');
+      List.Add('-- Generator');
+      List.Add('create generator ' + GeneratorName + ';');
+
+      List.Add('');
+      List.Add('-- Trigger');
+      List.Add('CREATE TRIGGER ' + GeneratorName + ' FOR ' + edNewTable.Text);
+      List.Add('ACTIVE BEFORE INSERT POSITION 0 ');
+      List.Add('AS BEGIN ');
+      List.Add('IF (NEW.' + KeyField + ' IS NULL OR NEW.' + KeyField + ' = 0) THEN ');
+      List.Add('  NEW.' + KeyField + ' = GEN_ID(' + GeneratorName + ', 1);');
+      List.Add('END;');
+    end;
 
-  fmMain.ShowCompleteQueryWindow(fdbIndex, 'Create New Table: ' + edNewTable.Text, List.Text);
-  List.Free;
-  bbCloseClick(nil);
+    fmMain.ShowCompleteQueryWindow(fdbIndex, 'Create New Table: ' + edNewTable.Text, List.Text);
+    List.Free;
+    bbCloseClick(nil);
+
+  end;
 end;
 
 procedure TfmNewTable.BitBtn2Click(Sender: TObject);