|
Hi there !
I have two table (mainTable & SubTable) with these
fileds :
mainTable --> IdMetal , NameMetal , Formula , ...
SubTable --> IDDetails,IdMetal , Company , ...
also
mainTable.IdMetal=SubTable.IdMetal
in myForm , I have some TextBox that filled by MainTable Fields
and Datagrid that filled by subTable Fields
when I want to create New row(Save) in main table , at the same time
i want to fill and save in datagrid ,
here is my code :
try
{
OleDbConnection cnnSave=new OleDbConnection(myConnection);
OleDbCommand cmd__AddRows = new OleDbCommand();
cmd__AddRows.CommandText =
@"INSERT INTO MainRegTable (IDMetal,NameMetal,FormulMetal, GroupMetal, CodeMetal,Comments)
VALUES (@p1,@p2,@p3,@p4,@p5,@p6)";
cmd__AddRows.Parameters.Clear();
cmd__AddRows.Parameters.AddWithValue("@p1", txtID.Text);
....
OleDbDataAdapter dagrd = new OleDbDataAdapter(@"Select * From SubTblMetal
WHERE IDMetal=
"+int.Parse(txtID.Text),
cnnSave);
DataSet dsGrd = new DataSet();
dagrd.Fill(dsGrd, "SubTblMetal");
dsGrd.GetChanges();
dagrd.Update(dsGrd);
dsGrd.AcceptChanges();
but , no changes in subtable ...
thanks for Reply
power is knowledge ...
|
|
|
|
|
Well...you haven't inserted anything into the sub table. So I'm not surprised that it contains no records.
If you want to do this, I would recommend that your either use a transaction round both assignments, or better create a stored procedure to create a transaction, and do both inserts - this has the advantage of keeping it all within the DB.
But you are going to need two inserts whichever way you go.
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Yes , but I want that the User have an option to Fill datagrid(subTable) or not , so it can be Blank ...
thanks
|
|
|
|
|
|
|
Thank you. Your very good example
|
|
|
|
|
You're welcome!
Those who fail to learn history are doomed to repeat it. --- George Santayana (December 16, 1863 – September 26, 1952)
Those who fail to clear history are doomed to explain it. --- OriginalGriff (February 24, 1959 – ∞)
|
|
|
|
|
Dear All,
I have an array ctrlpoints as following:
float[,] ctrlpoints = new float [4,3] {{ -4.0f, -4.0f, 0.0f }, { -2.0f, 4.0f, 0.0f },{ 2.0f, -4.0f, 0.0f }, { 4.0f, 4.0f, 0.0f }};
My question is how to write &ctrlpoints[0][0] in C#.
Thanks in advance.
|
|
|
|
|
Something like this should do it:
public static unsafe void Find()
{
float[,] ctrlpoints = new float[4, 3] { { -4.0f, -4.0f, 0.0f }, { -2.0f, 4.0f, 0.0f }, { 2.0f, -4.0f, 0.0f }, { 4.0f, 4.0f, 0.0f } };
fixed (float *address = &ctrlpoints[0, 0])
{
}
} In order for this to work, you must set the option to compile unsafe code.
|
|
|
|
|
To ad a bit to Pete's solution...
Accessing address of any variable is unsafe in the .NET word because the CLR (and the GC) can not check the security and safety of such address, so using it is your responsibility. So if you have no an extremely good reason (bad in fact) do not use it, do not copy such code from C/C++ 'as is' but look for the C# (.NET) way to do the very same thing...
I'm not questioning your powers of observation; I'm merely remarking upon the paradox of asking a masked man who he is. (V)
|
|
|
|
|
|
suppose, I've program includes 2 frmLogIn and frmMain, the syntax recall frmLogIn in frmMain how ? you see my code below:
in file Program.cs
[CODE]
...
Application.Run(new frmLogIn());
[/CODE]
in file frmLogIn.cs
[CODE]
...
private void CmdLogIn_Click(object sender, EventArgs e)
{
...
this.Hide(); // of frmLogIn
this.DialogResult = DialogResult.OK; // of frmLogIn
frmMain _frmMain = new frmMain();
_frmMain.Activate();
_frmMain.Show();
}
[/CODE]
in file frmMain.cs
[CODE]
/* // Don't called frmLogIn in this way
// If called frmLogIn in this way will be 2 frmLogIn in memory
frmLogIn _frmLogIn = new frmLogIn();
_frmLogIn.Activate();
_frmLogIn.Show();
*/
// I want recall frmLogIn in here, the syntax recall frmLogIn how ?
[/CODE]
|
|
|
|
|
Pass the instance of the first form to the second form:
private void CmdLogIn_Click(object sender, EventArgs e)
{
...
frmMain _frmMain = new frmMain();
_frmMain.TheLogInForm = this;
_frmMain.Activate();
_frmMail.Show();
}
public frmLogIn TheLogInForm { get; set; }
...
_frmLogIn = TheLogInForm ?? new frmLogIn();
_frmLogIn.Activate();
_frmLogIn.Show();
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
modified 7-Jul-14 8:01am.
|
|
|
|
|
i'm the following your way, my program will warning:
Error 1 The type or namespace name 'frmLogin' could not be found (are you missing a using directive or an assembly reference?)
|
|
|
|
|
C# is case-sensitive. If your class is called frmLogIn , then you can't use frmLogin to refer to it.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
I done it, you are very good examples of, Thank you very much.
|
|
|
|
|
hello,
i'm trying to get a list<t> through reflection and pass it to a procedure, but can't get it to work. Can anyone give me a hint please?
here's what i ave sofar:
public partial class Form1 : Form
{
public Form1()
{
InitializeComponent();
}
private void Form1_Load(object sender, EventArgs e)
{
Data data = new Data();
string name = "Persons";
Type type = data.GetType();
PropertyInfo listProperty = type.GetProperty(name);
List<object> listObject = (List<object>)listProperty.GetValue(data, null);
}
private void BindData<T>(List<T> data)
{
comboBox1.DataSource = null;
comboBox1.DataSource = data;
}
}
public class Person
{
public string Name { get; set; }
public int Age { get; set; }
public Person(string name, int age)
{
Name = name;
Age = age;
}
public override string ToString()
{
return Name;
}
}
public class Data
{
public Data()
{
Persons = new List<Person>();
Persons.Add(new Person("One", 1));
Persons.Add(new Person("Two", 2));
}
public List<Person> Persons { get; set; }
}
|
|
|
|
|
Are there any problems remaining after the cast to List<object> is replaced with List<Person> ?
Alan.
EDIT hope that ok now, was having a problem with the angle brackets around Person but not object!!
|
|
|
|
|
List<Person> works fine, List<object> does not.
I get: Unable to cast object of type 'System.Collections.Generic.List`1[WindowsFormsApplication1.Person]' to type 'System.Collections.Generic.List`1[System.Object]' in both last lines on the main proc.
i want it to work for other classes then Person also.So, BindData<person>(list) or BindData<car>(list), based on the name of the list property in class Data ("Persons" or "Cars").
modified 29-Jun-14 5:49am.
|
|
|
|
|
The Combobox.DataSource property is typed as Object and so you can infer that the Combobox must be checking the compatibility of the assigned data source. The only requirement is that the data source implements the non generic IList interface. You could cast to that but the combox box will accept the data source directly without casting.
Alan.
|
|
|
|
|
you're right! it works. thanks! i was thinking too complex i guess.
|
|
|
|
|
joost.versteegen wrote: give me a hint
Avoid Reflection.
You'll never get very far if all you do is follow instructions.
|
|
|
|
|
Even without using reflection, you won't be able to cast a List<Person> to a List<object> , because that would let you break the list.
Consider what would happen if this cast was allowed:
List<Person> onlyContainsPeople = new List<Person>();
List<object> containsAnyObject = (List<object>)onlyContainsPeople;
containsAnyObject.Add(new Hippopotamus());
Person thePerson = onlyContainsnPeople[0];
You now have a list which is guaranteed to only contain Person objects, but the only object in the list is not a Person object. Either the line which adds the item to the list would have to throw an exception, or the line which retrieves the item from the list would have to throw an exception. Neither exception would be obvious or expected.
There are a few generic interfaces and delegates which, in .NET 4.0 or higher, are declared as covariant or contravariant, which will allow something similar to what you're trying to do:
List<Person> onlyContainsPeople = new List<Person>();
IEnumerable<object> containsAnyObject = onlyContainsPeople;
Generic covariance only works for read-only interfaces/delegates - the generic type parameter is only ever returned, never passed in. Contravariance only works when the type parameter is only ever passed in, never returned.
See Covariance and Contravariance in Generics[^] on MSDN for more information.
"These people looked deep within my soul and assigned me a number based on the order in which I joined."
- Homer
|
|
|
|
|
Hi everyone! btw I'm jomilyn and i'm new here.... we will going to make our thesis project this time and i just want to ask some help with regards in using biometrics in c# maybe some of you have experience on how to code biometrics in c# especially in using fingerprint to register... please let me know if you have some idea... thanks!
|
|
|
|
|
You need a fingerprint scanner and an API. Any other questions?
|
|
|
|
|