|
The data is added in a loop after this piece of code. Data is added, but the X-Axis labelling is wrong. They are still in Datetime format.
|
|
|
|
|
The x-axis usually is "time" in a time-series. You've provided no new information.
It was only in wine that he laid down no limit for himself, but he did not allow himself to be confused by it.
― Confucian Analects: Rules of Confucius about his food
|
|
|
|
|
I want to change the XAxis Value type to Int. How can i change it in runtime?
Because, the XAxis value type is dynamically changed according to the filter inputs from the user.
|
|
|
|
|
|
Thanks a lot for your reply. I created sample application with same code here for your reference.
This method is called when form is loaded.
private void Format_Chart()
{
ChartArea _Area = new ChartArea("Utilization");
_Area.AlignmentOrientation = AreaAlignmentOrientations.Vertical;
_Area.AlignmentStyle = AreaAlignmentStyles.All;
chart_Utilization.ChartAreas.Add(_Area);
chart_Utilization.ChartAreas["Utilization"].Position = new ElementPosition(0, 10, 100, 90);
chart_Utilization.Series.Clear();
Series _Series_Current_Utilization = new Series("Current Utilization");
_Series_Current_Utilization.ChartArea = _Area.Name;
_Series_Current_Utilization.XValueType = ChartValueType.Date;
_Series_Current_Utilization.YValueType = ChartValueType.Double;
_Series_Current_Utilization.YValuesPerPoint = 1;
_Series_Current_Utilization.ChartType = SeriesChartType.StackedColumn;
_Series_Current_Utilization.Color = Color.FromArgb(200, 20, 191, 154);
Series _Series_Over_Utilization = new Series("Over Utilization");
_Series_Over_Utilization.ChartArea = _Area.Name;
_Series_Over_Utilization.XValueType = ChartValueType.Date;
_Series_Over_Utilization.YValueType = ChartValueType.Double;
_Series_Over_Utilization.YValuesPerPoint = 1;
_Series_Over_Utilization.ChartType = SeriesChartType.StackedColumn;
_Series_Over_Utilization.Color = Color.Red;
Series _Series_Target_Utilization = new Series("Target Utilization");
_Series_Target_Utilization.ChartArea = _Area.Name;
_Series_Target_Utilization.XValueType = ChartValueType.Date;
_Series_Target_Utilization.YValueType = ChartValueType.Double;
_Series_Target_Utilization.YValuesPerPoint = 1;
_Series_Target_Utilization.ChartType = SeriesChartType.Line;
_Series_Target_Utilization.Color = Color.FromArgb(200, 20, 191, 154);
chart_Utilization.Series.Add(_Series_Current_Utilization);
chart_Utilization.Series.Add(_Series_Over_Utilization);
chart_Utilization.Series.Add(_Series_Target_Utilization);
chart_Utilization.Legends[_Series_Current_Utilization.Legend].Docking = Docking.Top;
chart_Utilization.Legends[_Series_Current_Utilization.Legend].Alignment = StringAlignment.Center;
chart_Utilization.Legends[_Series_Target_Utilization.Legend].Docking = Docking.Top;
chart_Utilization.Legends[_Series_Target_Utilization.Legend].Alignment = StringAlignment.Center;
chart_Utilization.Legends[_Series_Over_Utilization.Legend].Docking = Docking.Top;
chart_Utilization.Legends[_Series_Over_Utilization.Legend].Alignment = StringAlignment.Center;
chart_Utilization.ChartAreas[0].AxisX.LabelStyle.Format = "yyyy-MM-dd";
chart_Utilization.ChartAreas[0].AxisX.Interval = 1;
chart_Utilization.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
chart_Utilization.ChartAreas[0].AxisX.IntervalOffset = 1;
chart_Utilization.ChartAreas[0].AxisY.Maximum = (double)(120);
chart_Utilization.ChartAreas[0].AxisY.Minimum = (double)(0);
}
There are two button click events to change the value type of XAxis.
1. To change to ChartValueType.Date
private void btnDates_Click(object sender, EventArgs e)
{
List<double> _Values = new List<double>();
int _Count = 1;
for(int i = 0; i < 10; i++)
{
_Values.Add(i * 2.5d);
}
chart_Utilization.Series["Current Utilization"].Points.Clear();
chart_Utilization.Series["Over Utilization"].Points.Clear();
chart_Utilization.Series["Target Utilization"].Points.Clear();
chart_Utilization.Series["Current Utilization"].XValueType = ChartValueType.Date;
chart_Utilization.Series["Over Utilization"].XValueType = ChartValueType.Date;
chart_Utilization.Series["Target Utilization"].XValueType = ChartValueType.Date;
chart_Utilization.ChartAreas[0].AxisX.Interval = 1;
chart_Utilization.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.Days;
chart_Utilization.ChartAreas[0].AxisX.IntervalOffset = 1;
foreach(double _dval in _Values)
{
var _point_current = new DataPoint(chart_Utilization.Series["Current Utilization"]);
var _point_target = new DataPoint(chart_Utilization.Series["Target Utilization"]);
var _point_over = new DataPoint(chart_Utilization.Series["Over Utilization"]);
_point_current.SetValueXY(new DateTime(DateTime.Now.Year, DateTime.Now.Month, _Count), _dval);
_point_target.SetValueXY(new DateTime(DateTime.Now.Year, DateTime.Now.Month, _Count), _dval);
_point_over.SetValueXY(new DateTime(DateTime.Now.Year, DateTime.Now.Month, _Count), _dval);
chart_Utilization.Series["Current Utilization"].Points.Add(_point_current);
chart_Utilization.Series["Target Utilization"].Points.Add(_point_target);
chart_Utilization.Series["Over Utilization"].Points.Add(_point_over);
_Count++;
}
}
2. To change to ChartValue type to Int
private void btnInt_Click(object sender, EventArgs e)
{
List<double> _Values = new List<double>();
int _Count = 1;
for (int i = 0; i < 10; i++)
{
_Values.Add(i * 5d);
}
chart_Utilization.Series[0].Points.Clear();
chart_Utilization.Series[1].Points.Clear();
chart_Utilization.Series[2].Points.Clear();
chart_Utilization.Series[0].XValueType = ChartValueType.Int32;
chart_Utilization.Series[1].XValueType = ChartValueType.Int32;
chart_Utilization.Series[2].XValueType = ChartValueType.Int32;
chart_Utilization.ChartAreas[0].AxisX.Interval = 1;
chart_Utilization.ChartAreas[0].AxisX.IntervalType = DateTimeIntervalType.NotSet;
chart_Utilization.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.NotSet;
chart_Utilization.ChartAreas[0].AxisX.LabelStyle.Format = "{0:0}";
chart_Utilization.ChartAreas[0].AxisX.Minimum = 1;
chart_Utilization.ChartAreas[0].AxisX.Maximum = 53;
chart_Utilization.Update();
foreach (double _dval in _Values)
{
var _point_current = new DataPoint(chart_Utilization.Series["Current Utilization"]);
var _point_target = new DataPoint(chart_Utilization.Series["Target Utilization"]);
var _point_over = new DataPoint(chart_Utilization.Series["Over Utilization"]);
_point_current.SetValueXY(_Count, _dval);
_point_target.SetValueXY(_Count, _dval);
_point_over.SetValueXY(_Count, _dval);
chart_Utilization.Series["Current Utilization"].Points.AddXY(_Count, _dval);
chart_Utilization.Series["Target Utilization"].Points.AddXY(_Count, _dval);
chart_Utilization.Series["Over Utilization"].Points.AddXY(_Count, _dval);
_Count++;
}
}
When i switch from Date to Int, the XAxis labelling still apears as DateTime value type. This is my issue.
Please let me know in which way i can solve this issue.
|
|
|
|
|
I solved the problem by myself.
It is by setting IsXValueIndexed = true for each series allocated for the chart area.
|
|
|
|
|
|
I want to load an Excel file which contains my data, then create pivot table and pivot chart based on that file. Is there any library (free one) that can do this without limitation?
|
|
|
|
|
|
How to change data by using a removable disk in C Sharp language
|
|
|
|
|
You're going to have to be a lot clearer about what your problem is: we cannot work out from that little what you are trying to do.
Remember that we can't see your screen, access your HDD, or read your mind - we only get exactly what you type to work with.
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I have a database designed in C Sharp, and I have to modify this data via the Internet remotely. I want a way to modify the data by means of a removable disk so that the user takes the disk and inserted it into his device and then the modification is done
|
|
|
|
|
You can't do that automatically anymore - at least not without getting the user to change his settings, and that dangerous: Using AutoPlay and AutoRun in Windows 10 (Article from SamLogic)[^]
It's dangerous because it means any executable disk that's inserted will autorun, and it was disabled because of virus / trojan activity using it. Certainly, I wouldn't enable it on my systems!
So you would have to run an app on the client computer that either processes the data, or which detects a removable disk being inserted - this may help: Detecting USB Drive Removal in a C# Program[^]
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
You don't understand what I mean yet
I have a database of 500 employees
And I have another device with the same employee database that I have. I want in the event that I change the employee's data, then transfer the update to the disk and give it to the user to get the update on the data of his employees
|
|
|
|
|
So what part of that do you need help with?
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
I want to update the data via the removable disk
|
|
|
|
|
And what part of that is proving difficult?
Seriously, I can't read your mind - so repeating the lack of information you didn't give us in the first place doesn't help anybody!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
La base de données est dans mon appareil et je souhaite apporter des modifications au niveau de la base de données client à partir de mon appareil car je suis le seul autorisé à apporter des modifications aux données car je suis l'administrateur
Google Tranlate:
The database is in my device and I want to make changes at the customer database level from my device because I am the only one allowed to make changes to the data because I am the administrator
modified 15-Jan-21 7:32am.
|
|
|
|
|
Veuillez utiliser l'anglais ici. J'ai traduit votre message pour vous cette fois
|
|
|
|
|
For the third time:Quote: And what part of that is proving difficult?
What have you tried?
Where are you stuck?
What help do you need?
I'm not trying to be difficult, but you aren't telling us anything!
Quote: Et quelle partie de cela s'avère difficile?
Qu'avez-vous essayé?
Où es-tu coincé?
Quelle aide avez-vous besoin?
Je n'essaye pas d'être difficile, mais tu ne nous dis rien!
"I have no idea what I did, but I'm taking full credit for it." - ThisOldTony
"Common sense is so rare these days, it should be classified as a super power" - Random T-shirt
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
As OG said this cannot be done automatically. There should be an application that uses the database, you need to write an update process in that application to read the data from the removable drive and update the database.
In other words YOUR USER has to initiate the process somehow and you need to write the process.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
I want an example in C Sharp
|
|
|
|
|
You keep saying "I want to update the data via the removable disk" but that doesn't make any sense because the disk itself cannot modify the data as it's not code that runs.
You can store an app on the disk and the user can launch that app, modifying a database that is also stored on that disk, but that's a severe security risk to your database and the people you describe in that database.
What you're doing seems like a really bad idea.
|
|
|
|
|
As the OP allready wrote : he wants to have a sample code.
This answers the unanswered question from Griff too.
The OP has no idea and now he wants to have a (more or less) complete solution.
A long long time ago (long before Networks are usual) I made a similar solution for a friend of mine. Perhapas this is an idea for the OP :
I store each data with a Timestamp, which represents the last modification, on the disk. The storing of the complete data was an action which was selected by the user.
The receiving PC could import the data and replaces each datablock in it's own "collection" with the data from the disk, if it's timestamp is newer.
If the data isn't existing on the PC it was added.
Finally the complete data (with the new timestamp) is written back to the disk so that the 2nd PC could import it. This action was also necessary.
This is the only way (for me) to do something like this if there normally is no connection between both (or more) PC's.
|
|
|
|
|
I'll give you the exact example in C# that you want. My rates are very reasonable.
The difficult we do right away...
...the impossible takes slightly longer.
|
|
|
|