|
see my answer (under this) with it's question ...
|
|
|
|
|
DR = scmd.ExecuteReader();
foreach (int VouType in DR)
Are you sure that VouType is an Integer ?
|
|
|
|
|
|
Member 12899746 wrote: foreach (int VouType in DR)
{
vochcombox.Items.Add(VouType);
}
You can't use a SqlDataReader like that. Each record could contain multiple fields, and it would have no way of knowing which field you want to convert to an integer.
Member 12899746 wrote: while (DR.Read())
{
this.vochcombox.Items.Add(DR.GetOrdinal("VouType"));
}
That's closer, but still not right. GetOrdinal returns the index of the specified field, not the value of that field.
You need to use the GetInt32 method to retrieve the value of the field as an int .
You should also wrap your connection, command, and data-reader objects in using blocks.
public void FillCompVouType()
{
Cursor = Cursors.WaitCursor;
try
{
using (var connection = new SqlConnection(cs.sourceConn1))
using (var command = new SqlCommand("Select Distinct VouType From Table_name Where Colum=1 order by VouType", connection))
{
vochcombox.Items.Clear();
connection.Open();
using (var dr = command.ExecuteReader())
{
while (dr.Read())
{
vochcombox.Items.Add(dr.GetInt32("VouType"));
}
}
}
}
catch (Exception ex)
{
MessageBox.Show(ex.Message, "Error", MessageBoxButtons.OK, MessageBoxIcon.Error);
}
finally
{
Cursor = Cursors.Default;
}
}
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
That error is telling you that he cannot convert DR object type to int.
DR type is SQLDataReader, you cannot convert data reader to int.
Why fill "vochcombox" twice?
While loop should work, but foreach doesn't for sure.
|
|
|
|
|
I first learned C# then C. As I've been working in C a lot lately, I've had to do without classes obviously since it's not really an OOP language.
I've gotten rather accustomed to passing stuff in as arguments and I'm writing a C# program right now where I've been passing "state" around via the method arguments rather than the typical storing fields/properties on the class and then accessing them from the class methods. Is there anything "wrong" about doing this? Is there anything "wrong" with not using the constructor to initialize member variables to certain values and instead just using a function in the class that calls the other business functions? E.G.
someObject myObject = new someObject();
var processResult = myObject.process(someString,Processor_Option_1);
Instead of:
someObject myObject = new someObject(someString,Processor_Option_1);
var processResult = myObject.result;
Note: Option 2 also uses class state member variables whereas 1 just passes it function-to-function as argument.
|
|
|
|
|
No, I don't think there is anything "wrong" with your code. But the way I see it (in option 2), it is clear that your constructor is not just a constructor but also a processor, it processes the operands and then puts the result in result field.
If you are going to do this, then write them like,
SomeObjectProcessorResult myObject = SomeObject.Process(someString,Processor_Option_1);
var res = myObject.result;
This will make much more sense in C#, it does not any longer depend on the states of SomeObject (it is static), but does the same — gets input, processes and then gives out output.
public class SomeObject {
public static SomeObjectProcessorResult Process(string someString, ProcessorType option) {
}
}
public class SomeObjectProcessResult {
public Type result;
}
This is a near C# definition of types, while ignoring the states.
Then in your first option, it is clear that the function is an instance one and will depend on states of object.
TheOnlyRealTodd wrote: Option 2 also uses class state member variables whereas 1 just passes it function-to-function as argument. Not so, you can ignore and from an external view I can easily think of implementation where I just process those parameters and ignore them (not save them). On the other hand, I can save those parameters in option 1 as state values.
That is the case in OOP, there are side effects everywhere. If you do not want to use side effects. Consider using F#, that is a functional programming language — but does have OOP.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
Awesome thanks for the feedback.
|
|
|
|
|
foreach (DataGridViewRow row in this.dataGridView1.Rows)
{
if (row.Cells(this.invoiceNO.Index).Value == true)
{
a.Add(row.Cells(this.invoiceNO.Index).Value);
}
}
|
|
|
|
|
In C#, you access array elements using [] not (),
if (row.Cells[this.invoiceNO.Index].Value == true)
This will access the elements, instead of invoking it as a function.
Indexers (C# Programming Guide)[^]
Methods (C# Programming Guide)[^]
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
many thanks...but i get another error (Operator '==' cannot be applied to operands of type 'object' and 'bool')
|
|
|
|
|
|
Or better, omit the test altogether:
if ((bool)row.Cells[this.invoiceNO.Index].Value)
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
|
|
|
|
|
There are 2 more ways to do this, in SO thread.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
it's work......... manythanks
|
|
|
|
|
Hello Every One !
Facing a issue in c# project Named(Sunny Traders) any Help will be appreciated
Error#1 " Unable to copy file "obj\x86\Debug\Sunny_Traders.pdb" to "bin\Debug\Sunny_Traders.pdb". The process cannot access the file 'bin\Debug\Sunny_Traders.pdb' because it is being used by another process"
Error# 2 "Could not copy "obj\x86\Debug\Sunny_Traders.pdb" to "bin\Debug\Sunny_Traders.pdb". Exceeded retry count of 10. Failed. Sunny_Traders"
What i tried is
1.Adding Exception in Antivirus
2.Change in Release and Debug
3.Cleaning Project and Rebuilding
4. What is working for me is to Close VS and delete all files from project->bin->debug ( Sadly i have to repeat No.4 Every time to execute.
waiting for a Solution 
|
|
|
|
|
Try disabling the Visual Studio Hosting Process:
How to: Disable the Hosting Process[^]
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
That is the way it works. Rebyc Rebyc wrote: because it is being used by another process"
All that needs to be done is terminate that program, because you are executing a write operations on a file and in Windows, files are locked from any write operation. Just terminate that program so that content can be updated, then restart the service. You are right, you have to repeat this process, otherwise do not start the debuggers until everything is in its place.
The sh*t I complain about
It's like there ain't a cloud in the sky and it's raining out - Eminem
~! Firewall !~
|
|
|
|
|
How to make in C# textBox accept only ,backspace and enter, numbers that are given in 6 textBoxes and only this symbols:
+,-,*,/,(,), and no letters
For example for letters: 6,4,2,3,25,75,50
modified 18-Dec-16 12:24pm.
|
|
|
|
|
I made this but it doesn't work well!!!
private Dictionary<char, int> numbers;
private void textBox1_KeyPress(object sender, KeyPressEventArgs e)
{
string number = tbHint1.Text + tbHint2.Text + tbHint3.Text + tbHint4.Text + tbHint5.Text + tbHint6.Text;
numbers = number.GroupBy(c => c).ToDictionary(g => g.Key, g => g.Count());
if (char.IsDigit(e.KeyChar) || char.IsSymbol(e.KeyChar))
{
char keyPressedByUser = e.KeyChar;
if (!number.Contains(keyPressedByUser))
{
e.Handled = true;
return;
}
int inputCount = textBox1.Text.ToUpper().Where(c => c == keyPressedByUser).Count() + 1;
if (inputCount > numbers[keyPressedByUser])
{
e.Handled = true;
return;
}
e.Handled = false;
}
else
{
e.Handled = true;
}
}
|
|
|
|
|
Let me give you a piece of advice. Keypress is a poor way to verify text input, what happens when the user pastes a value in?
This space for rent
|
|
|
|
|
Build a string of allowed characters and test for the presence of the character entered, for instance to allow only numbers (apologise it is in VB but easy to convert);
Public Const IntegerStrings As String = "0123456789" + ChrW(8)
Public Sub IntegerKeyPress(ByVal sender As System.Object, ByVal e As System.Windows.Forms.KeyPressEventArgs) Handles tbHigh.KeyPress, tbLow.KeyPress
If IntegerStrings.IndexOf(e.KeyChar) = -1 Then
e.Handled = True
End If
End Sub
Your difficulty arises when you are testing for a compound of digits like 75 and 50 in your example, for this you cannot use keypress but would have to test what was entered when the textbox is complete.
|
|
|
|
|
Please clarify for me what are EventListener, EventHandler, EventRaiser, and CallBack by explaining what each is and giving a code example of each term.
I've been reading articles and watching videos about Events and Delegates and my head is spinning due to the use of the terminologies just mentioned.
The presenters did not give clear explanations as to what they are and it's causing me to have a lot of confusions.
modified 18-Dec-16 9:34am.
|
|
|
|
|
|