Does SSRS Report Builder always default date to MM/dd/yyyy? - sql

I am setting up some reports on report builder and the date format always shows as MM/dd/yyyy, I want the format to be dd/MM/yyyy. I have checked the language of the server, database and user and they are all set to British English, I know this can be changed at report level however I am hoping to give end users the ability to create reports and not have to change this on each report. Is there anything I can set so this is always set to British English format or does report builder always show in American format?
I know this question is posted quite a lot but from what I have seen this is always about changing the format at report level but I want to change the default.
Thanks

If you want to display according to client's datetime format then you have to specify in Language property of Report.
Set =User!Language in Language property under localization tab of Report properties

What I do is instead of starting from a blank report each time I have a Basic Report Template file saved in a folder on the reporting server that end users can access. This report is blank except for the basic formatting that is applied to pretty much every report (start and end date parameters, common datasource, company logo and basic report properties including language)
Altering this template functionally alters the defaults as no one is using the blank new file they are all loading the basic template and modifying from there. This way you can set the language property to en-GB save the template and voila! Dates should now be dd/MM/yyyy.
If you don't have a common report server you can create the basic template and save it as an .rdl file which you can send to your colleagues to use instead of the default blank file.

If you look at the date formats in Report Builder, you will notice that the first set of them have asterisks. These formats will change with the regional settings of the report. In the report properties, set the language to =User!Language. We use these settings, and everyone gets the format they expect.

you could amend the dataset to change the date format.
SELECT CONVERT(DATETIME, 'your date column', 103);

This largely depends on your server locale/ regional settings. Once you fix that on the SSRS server side, you will not have to do that each time anymore.

Related

UltraWinGrid, on date filter select date column value changing format to MM/dd/yyyy from dd/MM/yyyy

I have infragistics2 v10.3.
I have ultra grid with two columns
|String|DateTime|
For DateTime I have custom formatting like "dd.MM.yyyy HH:mm" System Regional settings have short Date format like "dd-MMM-yy".
So grid shows 07.02.2013 14:00 and user See this.
The sytem have 07-Feb-13
When i want to filter all columns with text "fe" it is also shows me all rows which contains 07.02.2013.
During filtering it uses own formating and ignores my custom In InitializeLayout event we have done the following code to set date format for the StartDate column
e.Layout.Bands(0).Columns("StartDate").Style = Win.UltraWinGrid.ColumnStyle.Date
e.Layout.Bands(0).Columns("StartDate").Format = "dd/MM/yyyy"
e.Layout.Bands(0).Columns("StartDate").ButtonDisplayStyle = UltraWinGrid.ButtonDisplayStyle.Always
This date field column filter displaying based on Local system date format in opened calendar.
Please suggest me where I am doing wrong
As your are using string column type to store dates, I suspect how the dates are converted: 07/08/2015 is treated as August 7 or July 8?
You are setting the format for your grid but the data loaded in the DropDown may be in its original form as in the Database.
If you do not want to change the data type of your date column, I would advise that you set DateFormat within the select query as demonstrated in change-data-type-of-data-retrieved-by-select-query (but beware of the conversion errors or the date change scenario as pointed above)
If you are using SQL Server (I'm not sure about other databases) you can use a UDF (User Defined Function) in the select query as in this example of UDF on TechNet or this post on SO: using-udf-in-select-statement
Along with that don't forget to set the Format of your DropDown, if defined explicitly on initialize or on entering edit mode.
You need to set MaskInput property of the column like this:
e.Layout.Bands(0).Columns("StartDate").MaskInput = "dd/mm/yyyy";
Keep in mind when cell is in edit mode it uses an editor to display the edited value. So when you need to fix anything in edit mode you need to fix it in the editor.

format date in a textbox before storing in access database

I am entering the ate as 31122014 in a text box. on leaving the text box, it should show 31/12/2014 and the same should be store in mdb also. Similarly for date like 01022014 (01-feb-2014) it should show as 01/02/2014 in vb.net.
Date format for display purposes have nothing to do with how they should be stored in a database. If you need to store a date in a database, you use a DateTime column. The only time you need to format a date is to display it to the user. Date formatting should be done in the UI.
It's been a long time since I've used Access, but after you've created the text box on your form, click on it, and check it's properties. You may need to create a custom input mask to do what your asking, but it is possible. Please google search MS Access > Input Mask

SQL Server Report Builder Number Formatting

I am creating Reports in SQL Server Report builder.
When I set format of any number fields, in design it is displaying sample value.
For e.g. If I set format 0.00 to one numeric field, it started to display 12345.00
I have 10-12 fields in design, it caused very much confusion.
Is there any solution to change this?
When I open report in Visual Studio, it doesn't display like that.
Check Following screenshots:
In Report Builder:
In Visual Studio:
Finally, I got solution:
There is option in toolbar.
From what you described looks like you have an issue with the regional settings number format.
In your development environment, the decimal values are retrieved correctly, so you got 123.45 instead of 12345.00
In your target environment, the format of the decimal values is different, for example is 123,45 (comma instead of dot) so you get 12345.00

Same date format over several localizations

Currently im facing issue that troubles me a lot. I hope that somebody could help me out. I work for big company where are both Office 2007 (32bit) and Office 2010 (64 bit) used. Writing macros to be compatibile through whole company was hard task for me (I've never programmed in VBA before - actually this forum helped me a lot). My task is to maintain one big table in shared Excel sheet. There are several macros and several userforms. Now i will decsribe the problem briefly:
Sheet contains two columns with date format (start date and close date). Both values are imported to column form userform's textboxes (commandbutton lunches MsCal -exported to class- which fills those textboxes with date). What I simply need is to have date format as mm/dd/yyyy in both columns in order to perform filtering and other operations. When this values are updated by worker that uses different localization than English U.S. date is entered as dd.mm.yyyy. Thats make proper filtering based on date impossible. I tried to alter formating by:
UserForm1.TextBox10.Value = Format(Calendar1.Value, "mm/dd/yyyy")
but this piece of code misbehave somehow. On some machines it works, on some of them it is not working. And thats what is giving me headache. How should i proceed now? Is there a way to force excel to use same date format in sheet and ignore localization settings in Windows? Employees dont want to change localization to English U.S. because they are either used to their format, or need it for other applications. Is there a way to temporarily change localization only when this sheet opens?
Any advice will be apreciated.
Thanks in Advance
Peter
The best you can do is NEVER transform a date variable into Text.
Internally for excel a date is just a consecutive number (Left from the decimal separator are days and right from the decimal separator are hours). So, for example, the 10th of June 2012, for excel is 41188. This date value is independent of the date format set on your computer.
Now when it comes to represent dates (for humans to visualize) Excel will format this internal value into a String with the format set in your computer. So, for example if you have US date format in your computer, the date 41188 will be formated as 6/10/2012.
The big challenge with dates is to input the date in the correct format. When you input a Date as a string ("6/10/2012") then Excel will interpret it depending on the date format set on your computer. If you have US format, then it will thake the first cypher as month, the second as day and the last as the year. If you have a German format, it will read the first as day, the next as month and the last as year. So, the same input ("6/10/2012") for a US Format Excel will read 10th of june as for a German format Excel will read 6th of Oktober.
In your case, you should NOT format the date inside the Textbox10. For a US format Excel there is no problem, but if you have another date format, where the first cypher is the day instead of the month, you will get the wrong values:
Check this example. User inputs 10th of June in a German format Excel (dd.mm.yyyy)
Calendar1.Value retrieves a date value (41188)
Format(Calendar1.Value, "mm/dd/yyyy") transforms the date value into a string "06/10/2012"
When using the formated date (STRING), Excel will have to interpret what date it is. Because the computer date format is German, it will read Day:06, Month:10, Year:2012. You will be using day 41070 instead of 41188
If Calendar1.Value retrieves a Date variable and you give this date variable into a Date formated column, you will allways get the correct dale in your column and you will be able to filter and sort dates correctly regardless of the date format set inside the Column cells or the format set in the users computer.
Now, in your case, the best would be to assign directly the Calendar1.Value to the required cell. Something like:
ThisworkBook.WorkSheets("Sheet1").Range("C3").Value= Calendar1.Value
You can still asign Calendar1.Value into the TextBox10 for the user to see his selection, but disable the TextBox10 so that the only edit option is the calendar control. And when working with the date, istead of thaking it from the TextBox10, taking it directly from the Calendar1.Value .
If you still need to show the selected value from Calendar1 into a textBox then do NOT format the date in the Textbox. Instead, use:
UserForm1.TextBox10.Value = Cstr(Calendar1.Value)
This way, the user will see the date in the dateformat that he has set in his computer and to which he is used to.
One solution is to not use the date number format but rather only use the custom format for all your cell dates where you specify "mm/dd/yyyy" as the formatting string. However, in my experience, if your computer's regional settings are set to use "mm/dd/yyyy" then if you try make a custom cell formatting with this same string excel will keep as a dater linked to the computer setting so that doesn't help you. The way I worked around this was to change the date format on my computer, then format the cells as custom "mm/dd/yyyy" and save (and then turn your computer's settings back to how they were.) Now even though excel still claims they are date cells, you'll see that changing the settings on your computer doesn't change the value in the cell.
I guess another way is to always have a cell next to your date cell that calls the TEXT function. So if you have a date in A1 then in another cell =TEXT(A1, "mm/dd/yyyy") and only refer to this new cell. But that could make your spread sheet very messy.
I guess the best solution is to just get you IT dept to set every one in the company's date settings to use the same formats.

Changing currency symbol in SQL Reporting 2005

I'm using SQL Reporting 2005. I'm formatting a currency in a cell using
Format(Fields!NetPrice.Value, "C")
but the format is coming out
$10.00
I want pounds so
£10.00
Can someone tell me where is the setting to do this. I've looked and google and can't find it. Is it obvious? I want to set it on the report level if possible and not alter SQL Server settings due to minimise impact elsewhere.
I could cast the currency to a string and add "£" I guess but I want to do it properly.
You shouldn't need to manually edit the RDL file. I guess you couldn't see the language section as you didn't have the report selected.
To see the report properties click on the background behind the outline of the report (the yellow section) and check the properties window or select 'Report' from the drop down when viewing the properties window.
By default, formats for date, currency, and numbers are determined by the report server language at run time.
To override the formatting provided through the report server language, you can set the Language property within the report when you design it. This can be set at the report level or the TextRun level. If you want to vary the formatting based on the language or local settings of the browser or client application, you can set the Language property to an expression that includes the User!Language variable.
This info was provided HERE.
On the Report you can set the Language Property which is in the Localization section. You will place the language code like en-GB in this property. You can also do this at the field level too if you want. This should pick-up on your Regional and Language settings on your PC. If you want to override this or control this then you can simply set the report property accordingly.
If you set this property and then view the code of the report (RDL) you will see this towards the very bottom:
<Language>en-GB</Language>
This information will be used for currency, date, and numeric conversions.