

bazzer747
Members-
Content Count
195 -
Joined
-
Last visited
-
Days Won
1
Everything posted by bazzer747
-
Hi I have two dbgrids, one with the Default Drawing property unchecked, the other with it checked. This latter is because I need to colour certain columns according to their values. On both I have AltRowShading checked with a slightly darker row colour, which works fine. When I select a row which has the alternate colour in the former dbgrid the color changes to a light blue on which the black text is clearly visible. However, on the latter when I select an alternate row the colour changes to a dark blue and the black text is not easily visible. I can't see anywhere a way to change this dark blue to be the same on both dbgrids, and the only difference in all the properties is the latter has default drawing checked. Any thoughts would help.
-
Hi, I'm using a FireDac query to select different sets of data in an MSSQL database. I open the first query like this: dm.fdq.Open('SELECT * FROM tblUsers WHERE MSL = :pMG ORDER BY Sname, Fname',[ 1 ] ); which works fine. I then need to select a different set of records so I issue this (assuming this replaces the above statement): dm.fdq.Open('SELECT DISTINCT Fullname, Fname FROM vPGCEnrolments WHERE MatchGroup = :pMG AND MatchYear = :pY AND YES = 1',[ gvMatchGroup, gvYear ]); This works but I start to get Access violation error messages. The select works fine though, as the correct data displays. As I think this has something to do with the select statement I issue the following statement at the end of this procedure: dm.fdq.SQL.Clear; .. but when I look at the SQL string with ShowMessage( dm.SQL.text ); it still shows the Select Distinct line shown above. The Clear statement doesn't seem to clear anything. I've saved the SQL (assigning dm.fdq.SQL.text to a variable: cSQL, at the start of the procedure), and at the end of the procedure restore with dm.fdq.SQL.Add( cSQL ); but this does nothing either. I've a feeling I'm not understanding how the above should work correctly. Any advice would be appreciated.
-
Many thanks for your help. I've now used the temporary query setup and it works a treat, no errors or glitches. Live and learn 🙂
-
Ah, thankyou for the post. I've learnt using FireDac mainly from youtube and the like, so no formal training. Trial and error a lot of the time, eventually that gets me there. The temp connection route you mentioned seems like a definite way. So a 'close' on the query does what exactly (in terms of any SQL code in the query)?
-
Hi, I have searched for 'simple' stuff in using FireDac but havn't found the answer to the following, which would save me lots of keying ... I have a datamodule with a fdQuery & Datasource, and the fdQuery has the following: 'Select * from tTable where Company = :pC order by oOrderName' - so a parameter is created in the query. If in my code I want to set the query to different values do I have to do the select statement again in it's entirety, like: dm.fdc.Open( 'Select * from tTable where Company = :pC order by oOrderName', [ 'Debenhams'] ); Or can I simply specify the new parameter value like: dm.fdc.Open( '', [ 'Woolworths' );
-
Many thanks, both - I will certainly use these methods. The shorter version Serge mentioned I saw in a YouTube on Tips & Tricks by Dmitry Arefiev CodeRage 9.
-
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?
-
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.
-
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.
-
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.
-
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.
-
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 🙂
-
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.
-
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.
-
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.
-
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.
-
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.
-
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.
-
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?
-
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.
-
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?
-
Error trying to compile application in Delphi 10.3 Type mismatch for field
bazzer747 replied to joceravolo's topic in VCL
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. -
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.
-
Cannot perform this operation on a closed dataset
bazzer747 replied to bazzer747's topic in Databases
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. -
Cannot perform this operation on a closed dataset
bazzer747 replied to bazzer747's topic in Databases
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.