Jump to content

bazzer747

Members
  • Content Count

    189
  • Joined

  • Last visited

  • Days Won

    1

Everything posted by bazzer747

  1. bazzer747

    FireDac MySQL Connectivity

    Hi I'm trying to use a MySQL database on a remote MySQL Server. I've setup the Firedac TFDConnection with the correct parameters but when I try to test I get the following message: 'Cannot load vendor library [libmysql.dll, libmariadb or libmysqld.dll) The specified module could not be found Hint: check it is in the PATH or application EXE directories, and has x86 bitness' (see attached screenshot). I then went to the Embarcadero docwiki site which says much the same with a little more detail. I've followed the links it has for the libmysql.dll library and download it and put it in my EXE directory. However, when I try the test again I get the same message. I've closed Delphi (10.3.3) down and tried again but still get the same error message. Has anyone had similar issues and can suggest a way to fix this?
  2. bazzer747

    Debug v Release problem

    Hi, Something really strange, which I've never seen before in creating my apps (all Windows 64bit). When I run the app in Debug mode it runs fine, albeit 38mb in size. When I run it in Release mode (14mb in size) it fails with an access violation after the main form shows and I click on a button which links to another form. I can only think it has been something I have done and I'm frantically looking at all the changes I've done recently. Another oddity is that I have a Splash screen showing whilst the app is initialised, which is hidden before the final Application Run. However, the Splash screen is still showing (in the Release) after the main form shows, which is very odd as I have 'fSplashscreen.Hide; fSplashScreen.Free; immediately before the Application.Run command, which doesn't make sense. It does seem this is where the problem is, but I cannot trace this as it all works OK in Debug mode. Any thoughts would be appreciated.
  3. bazzer747

    Debug v Release problem

    Hi Sorted! The mystery was why it was OK in Debug but not in Release mode, I found the answer was I was trying to force connection to a Test Server and forgot (idiot!) to connect all the queries to the Test Firedac connection. The Splashscreen stayed on the screen because (trying to figure what was wrong) I had added the Splashscreen to the forms created at initialisation time and one was already being created, so there were two of them - only one was closed. As always, a silly mistake on my part, sorry to have bothered you before I did more thorough checking.
  4. Hi I'm having great difficulty in getting the syntax correct on a query I need to make via a Firedac Q!uery. Basically I want to set a WHERE clause that picks up all records that have a 'S' or 'R' in a certain field. In 'normal' SQL this codes like this: SELECT * FROM tTableName WHERE Status IN ('S', 'R') ORDER BY EventDate ... which works fine on the SQL Server, but how do I do this via a Firedac query? It may look something like this: qQueryName.Open('SELECT * FROM tTableName WHERE Status IN :pSR ORDER BY EventDate',[ ('S','R') ] ); The issue is how do I format the parameter - the above doesn't work, nor any of the different ways I can think of of setting the parameter to 'S','R'. Any help would be appreciated.
  5. bazzer747

    GetLastAutoGenValue

    Hi I've just seen the above function which Firedac provides, and read the DocWiki about it and it would be very helpful in my project as I create new records. However, I'm having difficulty understanding quite how it works, or rather what it requires passed with it. The Docwiki provides an example of how to program with it: ShowMessage(VarToStr(ADConnection1.GetLastAutoGenValue('MyGen'))); My question is - what is 'MyGen' referring to? I'm using MS SQL and the info says the method returns the last autogenerated value in the session. In my table I have an autogenerated column called 'ID' (an integer). I've changed the above example to read: ShowMessage( VarToStr( dm.fdcMSLTest.GetLastAutoGenValue( 'ID' ))); assuming what it wants passed to it is the fieldname that is autogenerated. However, this gives an error when run 'Capability is not supported'. Any thoughts would be appreciated.
  6. bazzer747

    GetLastAutoGenValue

    Works a treat, many thanks. Why can't the documentation be a little more helpful, especially as the guys who are looking this up won't know how to use it. Frustrated, but glad for this forum 🙂
  7. bazzer747

    RadioGroup Oddity

    Hi, I have a table which has an internal calculated field nHcap. It is a numeric field with values from 1 to 54. In the table I have another field which has a value of either 'Div 1', 'Div 2', or 'Div 3'. I use a RadioGroup with these three values available for selection, and when a selection is made I filter the table to show only records that have a certain nCap value. These values are 'Div 1' from 1 to 17, 'Div 2' from 14 to 21, and 'Div 3' from 20 to 54. The OnCLick event for the RadioGroup looks like this: procedure TfLadyMembers.rgDivsClick(Sender: TObject); var cChoice: String; begin dm.vMembers.Filtered:= False; //Start with clean slate cChoice:= rgDivs.Items[ rgDivs.ItemIndex ]; with dm.vMembers do begin if cChoice = 'Div 1' then Filter:= 'nHcap < 17'; if cChoice = 'Div 2' then Filter:= 'nHcap > 13 AND nHcap < 21'; if cChoice = 'Div 3' then Filter:= 'nHcap > 20'; Filtered:= True; end; if cChoice = 'All' then dm.vMembers.Filtered:= False; end; The problem I'm seeing is that when 'Div 1' is first clicked the filter gives incorrect records. Clicking the other buttons gives correct results, and subsequent clicks on 'Div 1' gives the correct results. I've traced the code in debug mode and the correct select/filtering is executed, so why am I getting incorrect records on the first selection. Very odd.
  8. bazzer747

    RadioGroup Oddity

    Just to finish this off, as no one has replied :-). I've changed from using Filter (as this fails with strange error conditions and incorrect results) to using SetRange, which works perfectly, and much quicker.
  9. bazzer747

    RadioGroup Oddity

    An extra 'oddity' is that when the first click on 'Div 1' produces the wrong set of records I sometimes get an error message to the effect a Bookmark is not found. I am not using Bookmarks so this is something internal.
  10. bazzer747

    RadioGroup Oddity

    An extra 'oddity' is that when the first click on 'Div 1' produces the wrong set of records I sometimes get an error message to the effect a Bookmark is not found. I am not using Bookmarks so this is something internal.
  11. bazzer747

    Startup Forms

    Hi When Delphi starts up an existing project, it shows some existing forms. I always thought it would show the forms that were in use when the project was last worked on. This isn't the case, as several forms are opened which haven't been worked on and have been closed down, yet still they are opened when that project is opened again. Where is this detail stored? I can only think in an ini file or the registry somewhere, but more important how can they be changed? Any thoughts would be appreciated.
  12. bazzer747

    Startup Forms

    Bill, HaHa, I struggle with lots of things that I could take for granted in earlier versions of Delphi like, as you, they always worked! Nowadays that isn't the case (in my experience). I have lots of problems with different areas of the IDE which I have to work around as they don't work as they should do. I've reported most of them but does anything get done - no, is my answer, and I've always updated to the latest Delphi (despite the ever increasing prices) partly in the hope that the 'known' issues will have been fixed.
  13. bazzer747

    Startup Forms

    Uwe, Thanks for that information. I've opened that .dsk file and can see thee 'unwelcomed' forms listed under [Modules]. Is it OK to delete them from here? Is this the best/safest way? I've also looked under tools/Options/User Interface, Reopen Menu - and under files can see these two unwanted forms (pas and dfm files) there, but with lots of other forms. Although the heading for this list says 'Reopen items' some do some don't. Is this where you can delete the unwanted .pas/.dfm files so they won't open despite the misleading heading?
  14. bazzer747

    Startup Forms

    Bill, I've found what you say not to be the case. On several occasions I've closed those 'unwanted' forms, opened and saved several other forms, then properly closed Delphi, saving any changes necessary and yet when I bring Delphi up again there are those two unwanted forms and not the forms that were opened when last used, other than the Main form and a data module (these two are in my 'Auto-create forms' list rather than 'Available forms' (which hold all the other forms in the project.
  15. bazzer747

    Startup Forms

    Uwe, Thanks for that information. I've opened that .dsk file and can see thee 'unwelcomed' forms listed under [Modules]. Is it OK to delete them from here? Is this the best/safest way? I've also looked under tools/Options/User Interface, Reopen Menu - and under files can see these two unwanted forms (pas and dfm files) there, but with lots of other forms. Although the heading for this list says 'Reopen items' some do some don't. Is this where you can delete the unwanted .pas/.dfm files so they won't open despite the misleading heading?
  16. I had a similar error with a type mismatch with a date field in MSSQL, due to a new data type being introduced that wasn't recognised by the driver. Found the new driver and all was well.
  17. Hi, When I open my project I cycle through all the queries I use making sure they are all active, this works fine. Depending on what year I want to view I have a radio box with '2019' and '2020' as selections and from that I need to 'filter' the data to only show the year chosen., I load the value into cYear. So I have this line: qQueryname.Open( 'SELECT * FROM tTablename WHERE mYear = :pY ORDER BY eDate',[ cYear ] ); When this line is executed I get the error message above on this query, which is confusing me as it is an 'Open' command. The weirder thing is that the SQL is executed OK and the resulting data is the correct year's data. Using: Filtered:= False; Filter:= 'MatchYear = ' + cYear; Filtered:= True; code instead works perfectly with no issues.
  18. bazzer747

    Cannot perform this operation on a closed dataset

    Hi, Thanks for this, I've got monitoring working OK now. Although there is so much information it takes ages to find what I need. I'll play with the controls to try to restrict this output to just what I need to look at. Many thanks for the lesson. And Dany, thanks for the info. All very useful.
  19. bazzer747

    Cannot perform this operation on a closed dataset

    Hi, Interesting suggestion, use the FireDac Monitor. I've never used that, never thought about this either, didn't know it existed even! I've checked the documentation about it and like a lot of Embarcadero documentation it rarely thinks the reader is a novice and doesn't give clear instructions. I've grappled by, but cannot get any output into the monitor, nor can I see any output using FDQuery.Text, so somewhere I haven't set a value or checked a box. I'll carry on searching/testing etc. as it seems like a very useful tool. A suggestion above said to close the query first before opening it and this has worked, so another confusing event here - it cannot work on a closed dataset but after closing it it will open. Who or what closes a dataset? Nothing I do in the application specifically closes any dataset. Many times I respecify the query to change parameters but never knowingly close it.
  20. bazzer747

    Cannot perform this operation on a closed dataset

    Dany, I meant no disrespect with my words, often they don't convey meaning very well. I did thank you for replying and am trying the other ways you mentioned. The documentation with Firedac, whilst extensive, is very poor at 'practical solutions' and error diagnosis. I have Cary Jenson's Delphi in Depth: FireDac (about the only one there is about Firedac) and again this doesn't cover the issues I'm having, so reading the manual isn't helping, hence my question on the forum.
  21. bazzer747

    Cannot perform this operation on a closed dataset

    Vandrovnik, Not doing Master-Detail, and this occurs in the FormActivate so the first time the query is accessed other than when it is opened when the application starts.
  22. bazzer747

    Cannot perform this operation on a closed dataset

    Attila, Did that but I'm no wiser, I'm not that versed in the deeper Delphi layers. What/how would I trace what the 'real' problem is?
  23. bazzer747

    Cannot perform this operation on a closed dataset

    That doesn't work - I get the same message when it tries to run aQueryname.Close I'm using Firedac for these commands, I've used this shorthand version of opening a query with a new SQL many times with no problem. Just annoying the error message is so unhelpful, almost saying you can't open this until you open it! The old fashioned filtering works fine; I'll try the param setting in the query and see if that works better. Thanks for replying.
  24. bazzer747

    How to Code SQL IN Statement correctly

    Many thanks, I have this code working fine now: qQuery.Open( 'SELECT * FROM tTableName WHERE Status IN ( :pS, :pR ) ORDER BY EventDate', [ 'S', 'R' ] ); Good to know there is a way ...
  25. The MS SQL ODBC driver 17 seems to requires other libraries to be installed.
×