Jump to content

Search the Community

Showing results for tags 'datasnap'.

More search options

  • Search By Tags

    Type tags separated by commas.
  • Search By Author

Content Type


  • Delphi Questions and Answers
    • Algorithms, Data Structures and Class Design
    • VCL
    • FMX
    • RTL and Delphi Object Pascal
    • Databases
    • Network, Cloud and Web
    • Windows API
    • Cross-platform
    • Delphi IDE and APIs
    • General Help
    • Delphi Third-Party
  • C++Builder Questions and Answers
    • General Help
  • General Discussions
    • Embarcadero Lounge
    • Tips / Blogs / Tutorials / Videos
    • Job Opportunities / Coder for Hire
    • I made this
  • Software Development
    • Project Planning and -Management
    • Software Testing and Quality Assurance
  • Community
    • Community Management

Find results in...

Find results that contain...

Date Created

  • Start


Last Updated

  • Start


Filter by number of...


  • Start




Found 9 results

  1. Carlos Gimenez

    New proyect in Delfos

    Hello, I have to make a new desktop project with a database in the cloud. They suggested I use Datasnap, but with the release of Rad Server I was told that datasnap may be discontinued. Then DMVC Framework was recommended to me, but I don't know it (just the name). I would like some advice... With DMVC Framework can I do the same as with Datasnap? What dou you recommend? Sorry for so much ignorance, I'm quite a beginner. greetings
  2. Hi, i have a mobile app, using datasnap server. Datasnap Server : A vcl standalone .exe program. Datasnap server (no rest), DBX and SQL Server connection. Client : FMX app, Android clients and TClientDataSet. A while before, I have 20-25 clients, there was no problem. But android client numbers increase, 190-200. Server running awhile but about one day later, it didn't response anything. Clients doesn't connect to server. I close and open datasnap server program. Then clients connect and operate again. How could i solve this? object DSServer1: TDSServer Left = 96 Top = 11 end object DSTCPServerTransport1: TDSTCPServerTransport PoolSize = 250 Server = DSServer1 Filters = <> AuthenticationManager = DSAuthenticationManager1 Left = 96 Top = 73 end object DSAuthenticationManager1: TDSAuthenticationManager OnUserAuthenticate = DSAuthenticationManager1UserAuthenticate Roles = <> Left = 96 Top = 197 end object DSServerClass1: TDSServerClass OnGetClass = DSServerClass1GetClass Server = DSServer1 Left = 200 Top = 11 end I increase Poolsize to 250. But it didn't solve problem. Thanks.
  3. Milan Vydareny

    Indy, OpenSSL, DataSnap on Android

    The difficulties when trying to use OpenSSL filters on a DataSnap application with an Android client have numbers of entries in various forums that go back a number of years. To summarize the problem: 1. Create a DataSnap server that specifies a filter of RSA, in my case using Delphi 11 Update 2, running on a Windows server as a service. 2. Create a DataSnap client that is deployed to an Android device, in my case a Samsung SD-9 with an ARM64-v8a instruction set running Android 10 3. The client application crashes because it is unable to load a required OpenSSL module. I have tried a number of solutions that are discussed in various places but nothing works for me. My question is: Does anyone know of a RECENT posting that provides a workable solution to getting an RSA filter to work with DataSnap/Indy/Firemonkey on an Android device? My current understanding that the root cause of the problem is probably the failure of Indy to remain current with Google's erratic development habits, that has deprecated OpenSSL in favor of a branch called Boring. Has this been addressed effectively by anyone? If not, are there any plans to do so? Thanks in advance, Milan
  4. Delphi 11.1 Datasnap Having trouble writing a blob field from a client app to the database on server. Client uses SQLite database and main database on server is Firebird. Client app uses TMSFNCSignature Capture component to write the signature to the SQLite database blob field like this and the image is actually saved to the blob field: procedure TMainForm.Save_Signature; var ms : tMemoryStream; begin ms := TMemoryStream.Create; EMUSig.SaveToImageStream(ms); Open_InvSigQry(MarafillerDM.FDQuerySchedSALEDATE.Value, MarafillerDM.FDQuerySchedMACHID.Value); MarafillerDM.InvSigQry.Insert; MarafillerDM.InvSigQrySALEDATE.Value := MarafillerDM.FDQuerySchedSALEDATE.Value; MarafillerDM.InvSigQryMACHID.Value := MarafillerDM.FDQuerySchedMACHID.Value; MarafillerDM.InvSigQrySIGNATURE.LoadFromStream(ms); MarafillerDM.InvSigQry.Post; MarafillerDM.InvSigQry.Close; end; Using SQLite DBBrowser I can confirm that the image is written to the database (.png image). My problem is writing that image to a blob field on the server database (using datasnap for the connection). The table I am writing to on the server has several fields including 1 blob field defined as - 'CUSTSIGNATURE BLOB SUB_TYPE 0 SEGMENT SIZE 80' in the Firebird database. I use the following code to write to the database. The EMUInvQry gathers the necessary data to transfer from a couple of tables: procedure TMainForm.Transfer_EMUInvoice; var ms : tStream; begin MarafillerDM.EMUInvClient.Insert; MarafillerDM.EMUInvClientINVNUM.AsString := MarafillerDM.EMUInvQryDOCKET.AsString; MarafillerDM.EMUInvClientINVDATE.Value := ModifiedJulianDateToDateTime(MarafillerDM.EMUInvQrySALEDATE.Value); MarafillerDM.EMUInvClientMACHID.Value := MarafillerDM.EMUInvQryMACHID.Value; MarafillerDM.EMUInvClientTOTPKTS.Value := MarafillerDM.EMUInvQryPKTSALES.Value; MarafillerDM.EMUInvClientTOTVALUE.Value := MarafillerDM.EMUInvQryMACHVALUE.Value; MarafillerDM.EMUInvClientSITECODE.Value := MarafillerDM.EMUInvQrySITECODE.Value; MarafillerDM.EMUInvClientTOTRETPKTS.Value := MarafillerDM.EMUInvQryRETURN_PKTS.Value; MarafillerDM.EMUInvClientTOTRETVALUE.Value := MarafillerDM.EMUInvQryRETURN_VALUE.Value; MarafillerDM.EMUInvClientADJTOTPKTS.Value := MarafillerDM.EMUInvQryADJ_PKTS.Value; MarafillerDM.EMUInvClientADJTOTVALUE.Value := MarafillerDM.EMUInvQryADJ_VALUE.Value; if (MarafillerDM.EMUInvQryPAYEMUCOMM.AsString = 'F') then MarafillerDM.EMUInvClientCOMMISSION.Value := MarafillerDM.EMUInvQryCOMMISSION.Value; MarafillerDM.EMUInvClientBALANCEDUE.Value := MarafillerDM.EMUInvQryBAL_DUE.Value; MarafillerDM.EMUInvClientFILLER.AsString := sFillerName; ms := TStream.Create; MarafillerDM.EMUInvQrySIGNATURE.SaveToStream(ms); try if Assigned(ms) then MarafillerDM.EMUInvClientCUSTSIGNATURE.LoadFromStream(ms); finally ms.Free; end; MarafillerDM.EMUInvClient.Post; end; When I check the Firebird database, all fields are transferred except the blob field which is set to null. Can someone please advise me how to correctly transfer the blob field data. Have googled and tried a few different approaches but nothing works for me. Obviously missing something but can't see the forest for the trees. Any help would be appreciated. Bill Zwirs
  5. I have a very strange situation. I have developed an online ordering app connecting to a Datasnap server. This is the strange part: purely by luck, I found out that when I have a database connection active (by another software) on the server where the datasnap server resides, the app runs very fast; when I don't it is way too slow(er). I use Interbase and Firedac. Does this make sense? Has anyone come across an issue like this? It's like when the database has no connections active, the first connection is taking way too long.
  6. Hello, I am busy with for quite awhile now with an issue with no results. I have looked many internet sites, but without any luck at all. > > I am trying to insert/update (text/image) data via a Client to a Datasnap Server by using FDQuery and ExecSQL (XE7 with Interbase 2017). > > If I only make the use of text, insertion and/or updation works fine and perfect without any problems. > But as soon as I add an extra image parameter as Stream, the following error message is produced: > > "HTTP/1.1 500 Internal Server Error" > > But the record INCLUDING the image stream is inserted into the remote Datasnap database, but my client application afterwards crashes and produces another access violation error upon closing the client app. > > So everything works fine/perfect with text only, WITHOUT image (stream) param. > > My server method uses FDQuery component for the insert (and one for update not included in this example)): > > // Push punch data to HQ > Function TdmServerMethod.iApp_PushPunch(FPdtFrom, FPdtDateIn, FPmsPic: TMemoryStream): Boolean; > Begin > Result := True; // Init > With qryPushPunch Do Begin //FDQuery component > Try > FPmsPic.Position := 0; // FPmsPic.Seek(0, soFromBeginning); Return cursor of stream to the beginning > Close; // Make sure dataset is not active > ParamByName('EP_FROM').AsDate := FPdtFrom; > ParamByName('TS_DATEIN').AsDate := FPdtDateIn; > ParamByName('TS_PICIN').AsStream := FPmsPic; THIS LINE WILL CAUSE/PRODUCE THE ERROR > ParamByName('TS_PICIN').LoadFromStream(FPmsPic, ftBlob); THIS LINE WILL CAUSE/PRODUCE THE ERROR > ExecSQL(); // Execute SQL statement > CloseStreams; // Cleanup stream > Close; // Cleanup dataset > Except > Result := False; > End; > End; > End; > > My Client REST method is as follow: > > Function TdmServerMethodClient.iApp_PushPunch(FPdtFrom: TDateTime; FPdtDateIn: TDateTime; FPmsPic: TMemoryStream; Const ARequestFilter: String): Boolean; > Begin > If FiApp_PushPunchCommand = Nil Then Begin > FiApp_PushPunchCommand := FConnection.CreateCommand; > FiApp_PushPunchCommand.RequestType := 'POST'; > FiApp_PushPunchCommand.Text := 'TdmServerMethod."iApp_PushPunch"'; > FiApp_PushPunchCommand.Prepare(TdmServerMethod_iApp_PushPunch); > End; > FiApp_PushPunchCommand.Parameters[0].Value.AsDateTime := FPdtFrom; > FiApp_PushPunchCommand.Parameters[1].Value.AsDateTime := FPdtDateIn; > FiApp_PushPunchCommand.Parameters[10].Value.SetStream(FPmsPic, FInstanceOwner); > FiApp_PushPunchCommand.Execute(ARequestFilter); AFTER EXECUTION THE ERROR "HTTP/1.1 500 INTERNAL ERROR" IS TRIGGERED, BUT THE RECORD INCLUDING THE IMAGE IS PERFECTLY INSERTED/UPDATED IN DE DATABASE > Result := FiApp_PushPunchCommand.Parameters[11].Value.GetBoolean; > End;
  7. Frédéric

    TDSRestConnection, bug in DoSetCredential

    Hi, Just want to share this and to eventually have confirmation (or not !!) I suspect a bug in the DoSetCredential method used by TDSRestConnection (System.Net.HttpClient.Win, TWinHTTPClient.DoSetCredential) I'm just upgrading an (working !) application from Delphi XE7 to Delphi 10.3.1. It's an application using Datasnap REST to communicate with a standalone Datasnap server (or IIS ISAPI in production) By doing my first tests I immediatly encountered the following problem: By calling the TDSRestConnection.TestConnection I get this error: Error adding header (87): Incorrect parameter ==> ('Paramètre incorrect' translated from french) Basic authentication is used. After debugging the code I saw that TNetEncoding.Base64.Encode adds a linebreak after 76 chars (The base64 encoded credentials goes slightly over 80chars...). This seems the default behavior the TBase64Encoding class but the WinHttpAddRequestHeaders API don't like it. I have changed the code in System.Net.HttpClient.Win to change the CharsPerLine to 255 and then it is OK. Bug or misuse ? Thanks ! Frederic
  8. Hello. I created a datasnap client-server application. Whenever I re-open the project or make changes in ServerMethods unit, the error occurred when I try to activate the clientdataset in the ClientModule unit. Anyone knows how to solve this issue? Thanks in advance. I have attached the screenshot of the error occurred.
  9. Hi, this is my very first post in this new forum (that I like a lot so far, still learning all functionalities). IIRC recently (Berlin? Tokyo?) some attributes were introduced in order to set a Datasnap method to respond a POST (or PUT) request without having to follow the 'updateXXX' naming convention... I was looking for a reference this morning but could not find it. Anyone can lend me a link or an example? Thanks in advance, Andrea