Jump to content

haentschman

Members
  • Content Count

    210
  • Joined

  • Last visited

  • Days Won

    5

Posts posted by haentschman


  1. 👍

     

    Remember: sometimes it is required to load the complete project, including DPR, DFM...then the ZIP format is your choice. :classic_cool:

     

    Background:  if the external server is closed, the thread here is incomplete. :classic_huh:


  2. Hi...:classic_cool:

    Quote

    In the end, we changed to use MySql

    ...why? :classic_huh: Why do you want to possibly fall into the license trap? :classic_unsure:

     

    https://searchitchannel.techtarget.com/feature/Using-MySQL-licensing-Open-source-license-vs-commercial-license

    https://www.mysql.com/de/products/

     

    or

     

    MyDAC / UniDAC without loading libmysql.dll (the dll is the problem)

     

    info in german: https://entwickler-ecke.de/topic_libmysqldll+lizenz_68186,0.html

     

    totally free databases: Firebird, PostgreSQL ...

     

    :classic_wink:

     

     

  3. Locate


    :classic_tongue: Gladly...but the most important thing is not to resolve the variable in debugging mode.

    FieldByName(Column).Value

    ...at the breakpoint...the debugger says:  Value = ??? :classic_sad:


  4. Quote

    Contrary, I changed all of my "SQL.Add(s)" to "SQL.Text := s". Even if I construct query conditionally, I collect it first as variable and then assign it to SQL.

    advertising :classic_tongue:

     

    This is another way to manage SQL statements. The SQL are stored in separate files in a folder structure in the project. SQL can be tested in the preferred DBMS editor. 

    Important: SQL Statements OUTSIDE of the Sourcecode (pas, dfm) in resources *.res. (without SQL.Add; SQL.Add; SQL.Add... :classic_cool:) 

     

     

    image.thumb.png.61d109fede274a617a5521311ae0d2e4.png

     

    Example:

    ...only 1 line for complete SQL.Text. :classic_cool:

    function TDatabase.CreateDocument(Path: string): TDocument;
    var
      Qry: TFDQuery;
      Document: TDocument;
    
      procedure FillDocument;
      begin
        // ! Achtung Reihenfolge wegen Properties die aus Vorhergehenden ermittelt werden
        Document := TDocument.Create;
        Document.State := sdsNormal;
        Document.ID := Qry.FieldByName('ID').AsInteger;
    
        Document.AddDate := Qry.FieldByName('AddDate').AsDateTime;
        Document.AddName := Qry.FieldByName('AddName').AsString;
        Document.AddYear := YearOf(Document.AddDate);
        Document.DocumentGroupString := Qry.FieldByName('DocumentGroupString').AsString;
        Document.DocumentTypeString := Qry.FieldByName('DocumentTypeString').AsString;
        Document.DocumentCaption := Qry.FieldByName('DocumentCaption').AsString;
        Document.DocumentChoice := TSEAMTools.GetDocumentChoiceType(Document.DocumentTypeString);
        Document.SendTypeFolder := Boolean(Qry.FieldByName('SendTypeFolder').AsInteger);
        Document.SendTypeUSB := Boolean(Qry.FieldByName('SendTypeUSB').AsInteger);
        Document.SendTypeMail := Boolean(Qry.FieldByName('SendTypeMail').AsInteger);
        Document.ReceiptDate := Qry.FieldByName('ReceiptDate').AsDateTime;
        Document.ServiceDate := Qry.FieldByName('ServiceDate').AsDateTime;
        Document.ReceiptNumber := Qry.FieldByName('ReceiptNumber').AsString;
        Document.ReceiptReceiver := Qry.FieldByName('ReceiptReceiver').AsString;
        Document.ReceiverReceiverName := Qry.FieldByName('ReceiverReceiverName').AsString;
        Document.Store := Qry.FieldByName('Store').AsString;
        Document.StoreName := Qry.FieldByName('StoreName').AsString;
        Document.StoreName_1 := Qry.FieldByName('StoreName_1').AsString;
        Document.StoreCountry := Qry.FieldByName('StoreCountry').AsString;
        Document.StorePostCode := Qry.FieldByName('StorePostCode').AsString;
        Document.StoreLocation := Qry.FieldByName('StoreLocation').AsString;
        Document.StoreStreet := Qry.FieldByName('StoreStreet').AsString;
        Document.ServicePartner := Qry.FieldByName('ServicePartner').AsString;
        Document.ModifiedDate := Qry.FieldByName('ModifiedDate').AsDateTime;
        Document.ModifiedName := Qry.FieldByName('ModifiedName').AsString;
    
        Document.OriginalFileName := Qry.FieldByName('OriginalFileName').AsString; // als Letztes wegen Setter
        Document.DocumentLocation := TTools.GetDocumentLocationType(Document.OriginalFileName);
    
        Result := Document;
      end;
    
    begin
      Result := nil;
    
      Qry := CreateQuery;
      try
        // Pfad
        Qry.SQL.Text := GetSQLByName('SEAM_DOCUMENT_SELECT_PATH');
        Qry.ParamByName('FIN').AsString := Path;
        Qry.Open;
    
        if Qry.Eof then
        begin
          // Belegnummer
          Qry.SQL.Text := GetSQLByName('SEAM_DOCUMENT_SELECT_RECEIPT_NUMBER');
          Qry.ParamByName('REN').AsString := TToolsRegex.ExtractReceiptNumber(Path).Value;
          Qry.Open;
    
          if not Qry.Eof then
          begin
            FillDocument;
          end;
        end
        else
        begin
          FillDocument;
        end;
      finally
        Qry.Free;
      end;
    end;

    image.thumb.png.02dee68656c6d080c438e5e619d35d87.png


  5.  

    Quote

    but "Like" can't be "parametrized".

    I dont think so...:classic_tongue:

     

    update Documents set SendTypeUSB = :GES where OriginalFileName like :PAT
    ...
    Qry := CreateQuery;
    try
      case SendType of
        sdtFolder: Qry.SQL.Text := GetSQLByName('SEAM_WRITE_SEND_FOLDER_STATE');
      end;
      Qry.ParamByName('GES').AsInteger := Integer(State);
      case ValueType of
        vatFileName:
        begin
          Qry.SQL.Add(GetSQLByName('SEAM_WRITE_SEND_WHERE_FILENAME_LIKE'));
          Qry.ParamByName('PAT').AsString := '%' + ExtractFileName(Value);
        end;

    ...it is working.

     

    Quote

    Where / how to I put the TQuery? On the Form or in the DataModule

    TQuery + TDatasource on TDataModule. :classic_cool: Never on the form! :classic_ninja:


  6. Hi... :classic_cool:

    Last week we all moved to a new server. With my new profile, among other things, the Delphi had to be reinstalled....:classic_unsure: Except for the interface from Git to Mantis "Murtle" everything is working again.

     

    Problem:
    See picture 1.
    A "Connect" via mantisconnect.php already brings this error. The config files are copied 1:1 from the old profile. The Mantis as such is
    accessible! The Mantis is not on the server but on an unchanged NAS.

     

    Can someone do something with the message?

     

    What else happened:
    * Windows update to 20H2 is still pending. Done: without success!
    * The tool is written for NET 2.0. I don't know if that was on it before... Now is from 4.5 on it.

    PS: Also with the old profile the same error comes since the change.
    PS: The aunt is silent about the murtle in connection with the error.
    PS: About the aunt I found information that may have to do with SSL3/TLS. system.io.ioexception unexpected file end
    PS: Uninstalled everything, removed settings, rebooted, installed, settings in...same error!

     

    What it should look like: Image 2

     

    Thanks for info...

     

    Addendum:
    ...imho NET 2.0 is on it. Image 3.

     

    * Crosspost in the german DP https://www.delphipraxis.net/207490-tortoisegit-mantis-murtle.html

    screen.png

    Murtle_1.png

    NET.png


  7. Hi...:classic_cool:

    Quote

    I have recently upgraded from Delphi 4 to Delphi 10.4 - yes, a big leap indeed.

    ...wow. :classic_blink:

    Quote

    so sadly now my knowledge has become obsolete.

    ...better. :classic_tongue:

     

    Questions:

    We know IBConsole and IBDatabase ...but which database you use? Firebird or Interbase?

     

    Tools:

    Admintool: https://dbeaver.io/

    ...better than console. :classic_cool:

     

    Tip:

    Never use T???Table...only T???Query and SQL!

×