|
Apologies for the shouting but this is important.
When answering a question please:
- Read the question carefully
- Understand that English isn't everyone's first language so be lenient of bad spelling and grammar
- If a question is poorly phrased then either ask for clarification, ignore it, or mark it down. Insults are not welcome
- If the question is inappropriate then click the 'vote to remove message' button
Insults, slap-downs and sarcasm aren't welcome. Let's work to help developers, not make them feel stupid..
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
For those new to message boards please try to follow a few simple rules when posting your question.- Choose the correct forum for your message. Posting a VB.NET question in the C++ forum will end in tears.
- Be specific! Don't ask "can someone send me the code to create an application that does 'X'. Pinpoint exactly what it is you need help with.
- Keep the subject line brief, but descriptive. eg "File Serialization problem"
- Keep the question as brief as possible. If you have to include code, include the smallest snippet of code you can.
- Be careful when including code that you haven't made a typo. Typing mistakes can become the focal point instead of the actual question you asked.
- Do not remove or empty a message if others have replied. Keep the thread intact and available for others to search and read. If your problem was answered then edit your message and add "[Solved]" to the subject line of the original post, and cast an approval vote to the one or several answers that really helped you.
- If you are posting source code with your question, place it inside <pre></pre> tags. We advise you also check the "Encode "<" (and other HTML) characters when pasting" checkbox before pasting anything inside the PRE block, and make sure "Use HTML in this post" check box is checked.
- Be courteous and DON'T SHOUT. Everyone here helps because they enjoy helping others, not because it's their job.
- Please do not post links to your question into an unrelated forum such as the lounge. It will be deleted. Likewise, do not post the same question in more than one forum.
- Do not be abusive, offensive, inappropriate or harass anyone on the boards. Doing so will get you kicked off and banned. Play nice.
- If you have a school or university assignment, assume that your teacher or lecturer is also reading these forums.
- No advertising or soliciting.
- We reserve the right to move your posts to a more appropriate forum or to delete anything deemed inappropriate or illegal.
cheers,
Chris Maunder
The Code Project Co-founder
Microsoft C++ MVP
|
|
|
|
|
I'm writing an ActiveX Controller to expose to COM and will plan to write an installer for it. I'm using some models for an ActiveX that used Java for HTML inputs. It was a model written for C#. I'm a beginner with the language. I'm a bit confused on how to tell the program that it should get its data from the control source of the report in MS Access (Office 365). I'm also not certain which methods should be private or public in the code when it passes information back and forth between the programs.
|
|
|
|
|
Active X has been dead for decades. Why are you doing it this way?
Access is also pretty dead TBH
|
|
|
|
|
For Access or other Office applications to use a custom library, it would have to be exposed via COM.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
You don't need to use ActiveX for COM. .NET supports COM out of the box with the aid of the COMVisible[^] attribute.
|
|
|
|
|
I understand it needs exposure to COM, but I think the question here is more about how to reference Access as the source of the data the control uses to give its output. Specifically, how it would be referenced in a C# code.
|
|
|
|
|
What would you suggest in place of Access in terms of working with databases?
Surely it must have wide use if it is continually updated in Office releases.
Is there software that gives you the ability to generate queries and reports with the same capabilities in formatting.
|
|
|
|
|
I'd recommend you the SQL Server. Its Express edition is free.
|
|
|
|
|
Access is useful if you have no programmers and want a simple DB with a simple UI. But it's pretty dead technology overall
|
|
|
|
|
Since you never said what this ActiveX does, it's interesting to see how one builds a system to support it.
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
|
|
|
|
|
Sorry. That portion may not have copied into the post.
The input for the program would be the string from a field in the report in MS Access.
The program takes the string and uses the QR Coder Nugent Package to create a QR code image.
The program will output the QR code image as the object that is printed in the report.
|
|
|
|
|
Hello Everyone!
I am C#/ASP.NET new learning
And my english is very bad (I am Taiwanese)
My Boss give me a .NET test
the problem is like say : Use swtich(expr) expression can action on byte?, long?, String?
My answer is
byte => OK, long => unknow, String => OK
But my boss give me answer is
switch(expr) expression need is integer type / integer expression
Os long and string is not use on switch
After I fund answer in internet like
Switch Statement in C# - GeeksforGeeks
The first paragraph: The switch expression is of integer type such as int, char, byte, or short, or of an enumeration type, or of string type
Can someone talk me true answer?!
I vary appreciate, thank your
*I can not ask on Chinese Webpage beacuse i afraid my boss see this
|
|
|
|
|
it's possible your boss is using the wrong words: there are two types of switch in c# And he may be getting confused.
Strings, integers of all forms (including long), chars, enums are all legal in C# switch statements: C# switch statement | Microsoft Docs[^]
With switch expressions, the range is even bigger: switch expression - C# reference | Microsoft Docs[^]
"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 guess if he's saying something that is untrue, create a project and show him you can switch on almost anything? That was a major step forward, he's thinking of C++ I reckon
|
|
|
|
|
I cannot remember but it seems like a language I used in the past only allowed switches on integers. Christian implies that C++ is that way so my guess is your boss is not aware that most languages do allow switch on other types.
|
|
|
|
|
Hi,
I am developing a Work Load Analysis platform and there I use System.Windows.Forms.DataVisualization.Charting. The problem i have is, Xaxis is not updated when switching between different value types in runtime.
Here is the code, which i use to update chart from DateTime valuetype to int.
Here _EndWeek and _StartWeek are integer parameters pass to this method.
List<int> _Weeks = new List<int>();
int _Week_Difference = _EndWeek - _StartWeek;
for (int i = 0; i <= _Week_Difference; i++)
{
_Weeks.Add(_StartWeek+ i);
}
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.Number;
chart_Utilization.ChartAreas[0].AxisX.IntervalOffsetType = DateTimeIntervalType.Number;
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();
I would be glad, if some could help me in this case.
|
|
|
|
|
You cleared all your points; I don't see you adding any back in.
chart_Utilization.Series[0].Points.Clear();
chart_Utilization.Series[1].Points.Clear();
chart_Utilization.Series[2].Points.Clear();
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
|
|
|
|
|
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.
|
|
|
|
|