Forum Replies Created
-
AuthorPosts
-
amckinlay
KeymasterVPN will be just as slow as (or slower than) connecting directly since all it does is add a layer of encryption. It’s still going across the internet with the resulting latency. Unless someone had dedicated (non-internet) connections between offices (with low latency).
amckinlay
KeymasterYes, if you make a socket connection to a second Suneido server it would be direct from the client.
Our customers use Windows Terminal Services (RDP) to access across the internet. Another option would be to run an HttpServer and write a web app, although currently the Suneido libraries do not have much support for that (i.e. no framework like Rails).
Because Suneido’s client-server protocol allows executing arbitrary code, I would not make a Suneido server accessible from the internet. e.g. Someone could RUN System(“del *.*”) Although you could limit the risk by setting permissions on the user running the server, it is safer to run an HttpServer and use web services for access.
amckinlay
KeymasterBasically, it is just access to the database (e.g. queries) that is client-server. It is similar to using other database servers like MySQL. One difference is that Suneido loads the program code from library tables in the database. Another difference is that Suneido packages the client and server into a single exe.
Database triggers run on the server. Rules may also run on the server if their result is required e.g. for a query.
If you use File to access an operating system file, that happens completely on the client. The current directory will be the client’s.
If you want multiple clients to access a file, then you need to store it in a shared directory that everyone has access to. And it is better to use a UNC path (e.g. \servercshared) (rather than mapping a drive letter) so that the path is the same for all clients. (You can put suneido.exe in the same shared location and set up client shortcuts to use it. This makes it easier to update the exe.) This shared location can be on the same computer as the server is running on, or it could be a separate file server.
Normally, it is sufficient to run your code on the clients. For special cases it is possible for a client to use ServerEval to run code on the server. But you have to be careful with this because if you run something that blocks, then you will block the entire server and all other clients. An alternative is to run an HttpServer as a client, but on the same physical machine as the server, and then use it to run anything you need executed there. Also, if you do this kind of thing, you need to worry about concurrency e.g. multiple clients running something on the server at the same time.
Note: Suneido’s use of client-server is designed for local area networks. It uses many small requests. If you try to run it across the internet, even with high bandwidth, latency will make it very slow.
Does that answer your questions?
amckinlay
KeymasterHi Bjoern,
Good to hear from you. I am open to doing something with wxwidgets. Maybe it would even give us a GUI option for the Java version of Suneido.
I don’t have a lot of time for this but I will try to help where I can. I can certainly answer questions. And if we need a few built-in functions added to the Suneido exe (i.e. in the C++ code) I can try to help with this.
One question is whether it would be possible to make it compatible with existing application code. e.g. could we make compatible versions of ButtonControl and FieldControl that call wxwidgets. If not, it would be a big job to change all the application ui code.
andrew
amckinlay
KeymasterYou can also specify x: position in a Horz and y: position in a Vert
See Users Manual > Reports > Containers
amckinlay
KeymasterGlad you got it working.
amckinlay
KeymasterUnfortunately, you cannot make a foreign key to only part of another key, although technically this would be possible
Can you give me details on when the foreign key is not working? What kind of error are you getting?
amckinlay
KeymasterThat all sounds correct.
If you look at the code at the end of Init you can see what it does:
if false is s = GetFile(args)
s = args
s.Eval()args in your case should be “server.go”
It sounds like GetFile is failing and it is trying to Eval “server.go”
You can run the above code (or just GetFile) from the WorkSpace and see what you get.
Are you sure you’re typing the file name correctly, and that it’s in the current directory?
amckinlay
KeymasterSorry, I missed one part. For some reason (long standing quirk), the rules don’t run until you Set the RecordControl. Try adding:
New()
{
.Data.Set(Record())
}(“Data” is the name of the RecordControl)
amckinlay
KeymasterRules only work in records. To use them in a screen you need to use a RecordControl. e.g.
Controls: (Record (Vert
...
))The RecordControl only has to be around the data fields, but then you’d have to put them in another Vert so it’s easier to wrap it around everything.
amckinlay
KeymasterI would suggest keeping the total inside the sub-report, using the Total option in QueryFormat (see the help). Otherwise it will be hard to get the total “out” of the sub-report.
Another option is to just do a separate QueryTotal to get the total. (Somewhat redundant, but simple.)
One thing to remember is that reports run somewhat “asynchronously”. They don’t necessarily execute in the order that you might expect, making it difficult (or impossible) to pass variables around.
amckinlay
KeymasterThat seems strange. Did you put it at the beginning of Init? Nothing should be loaded before Init, but Init will cause other things to be loaded.
There could be things in the old stdlib that are incompatible with the new exe. You could run CheckLibrary(“stdlib”) to make sure everything compiles. Or CheckLibraries() to check all the libraries in use. Do the stdlib tests all pass?
I would recommend upgrading to the latest stdlib if you have time. There should not be too many incompatibilities, and there are lots of fixes and improvements.
amckinlay
KeymasterYou can Insert/Append and Remove from Vert’s and Horz’s
Or you can use SetVisible – that doesn’t adjust the layout
Or you could use a TabsControl and just select the right tab
Hopefully one of those will work for you
amckinlay
KeymasterThe only “manual” is the help included in Suneido (in the standard download). It’s mostly a reference but there are some tutorial sections.
I don’t know of any medical applications. (but that doesn’t mean they aren’t out there)
Suneido is used by various people and companies but it is not very widespread.
I have run into the Chrome redirection problem – it has something to do with logging in to SourceForge versus logging into the forum. I think if you log out and back in it fixes it. (I am using Chrome to post this.)
Note: Axon’s software already has export facilities. I would suggest you contact Axon directly (via your trucking client) and talk to them about the requirements.
amckinlay
KeymasterI went with setting a member in the Suneido object because it was the simplest to implement.
We’ll see how it works.
-
AuthorPosts