|
Hi,
Very new to this so appreciate the help.
I am creating an C# application that has a simple database .mdf inside with a table that will hold numbers. Headings are REF and ID as a primary key.
the .csv file will be formatted as:
number,
number,
number,
My application can browse the file path to a text box but then I need to use an 'Import' button to cycle through the numbers in the .csv file and update the table in the database and place them in the REF column.
I can read the .csv into a DataGridView but would rather it just went into the table and didn't create any duplicates when doing so.
Any help appreciated.
Thanks
|
|
|
|
|
|
You need to do some basic research, there are many examples for this process, CSV to Table to CSV (shameless plug)[^]
Then all you need to do is write it to the database and there are a myriad of examples for that as well.
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
How to convert docx,pdf or doc files into html file use c# ?
only use Microsoft class + library, without using third party library
|
|
|
|
|
|
You could just use Word automation to do it. Have it load the file and just do a SaveAs and tell it to save in HTML format.
Then you have to put up with the horrifyingly bad HTML that Word generates...
Or you could just a 3rd party library...
|
|
|
|
|
It's been a long time since I've worked with column sorting. It was working until I fine tuned it.
Now I can't figure out where it's broken. I don't if broke the code in the form, or the class I fined tuned.
But I can't click and go descending, but when I click it stays the same, descending.
It fires twice, the first time is correct, then the 2nd time it goes back
private void LVRecord_ColumnClick(object sender, ColumnClickEventArgs e)
{
Cursor = Cursors.WaitCursor;
if (e.Column.Equals(_lvrColumnSorter.SortColumn))
{
if (_lvrColumnSorter.Order.Equals(SortOrder.Ascending))
{
_lvrColumnSorter.Order = SortOrder.Descending;
}
else
{
_lvrColumnSorter.Order = SortOrder.Ascending;
}
}
else
{
_lvrColumnSorter.SortColumn = e.Column;
_lvrColumnSorter.Order = SortOrder.Ascending;
}
this.LV_Record.Sort();
Cursor = Cursors.Arrow;
}
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
Well that took forever to figure out
I went to the listview properties and registered the column click event.
Now it fires 3 times.
Changed up the code but it wasn't a factor
And my class wasn't the issue as well.
private void LVRecord_ColumnClick(object sender, ColumnClickEventArgs e)
{
Cursor = Cursors.WaitCursor;
var comparer = (LVDataViewStockComparer)LV_Record.ListViewItemSorter;
if (!e.Column.Equals(comparer.SortColumn))
{
comparer.SortColumn = e.Column;
comparer.Order = SortOrder.Ascending;
}
else
{
if (comparer.Order.Equals(SortOrder.Ascending))
comparer.Order = SortOrder.Descending;
else
comparer.Order = SortOrder.Ascending;
}
comparer.SortColumn = e.Column;
this.LV_Record.Sort();
Application.DoEvents();
Cursor = Cursors.Arrow;
}
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
Hi,
1.
I have no experience with ListView sorting, however I read one page of documentation[^], and what struck me was the example there explicitly states a new Comparer object needs to be created each time (not sure why!).
2.
I have been sorting lots of DataGridViews, and the functionality I typically want is sorting by multiple columns, so I always resort to a list of sort criteria (think MRU) and hence an explicit Comparer method.
3.
BTW, I strongly object against your call to DoEvents; this method is to be avoided at all costs, the one thing it does is reshuffling the processing of events, and at best it apparently fixes a structural problem in existing code while adding lots of new anomalies in its behavior. If DoEvents seems to fix a problem, think again and come up with a real solution!
|
|
|
|
|
I read that as well on the ListView, but found Microsoft examples saying just do it in Form Designer initialization.
I ended up trying both last night and doing it everytime the column was clicked didn't work as smooth or just failed.
On the DoEvents, that's something I picked up in C++ WinForms programming. The idea is to let the Windows Message Pump process other commands on the GUI thread like paint, move a progress bar, move the form over while something is processing.
As an experiment I took all the Application.DoEvents out and gave it a test run and it wasn't very fluid. I suppose the next thing I need to learn of how to create GUI threads. If anybody is up to it, take my splash screen and refactor it with GUI threads, it would be a great learning experience for me.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
A Windows forms "splash screen" can be as simple as a form that the user can't interact with while the app is starting up. (Show, process, close).
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Thats what is does, but I use Application.DoEvents to show the status of looking for the database server and connecting.
It paints the screen. I didn't think it was a bad thing and works great.
If it ain't broke don't fix it
Discover my world at jkirkerx.com
modified 7-Feb-19 15:46pm.
|
|
|
|
|
DoEvents is a way to avoid using a background worker.
It's "more" than what application code should be aware of.
"(I) am amazed to see myself here rather than there ... now rather than then".
― Blaise Pascal
|
|
|
|
|
Could you elaborate a bit more?
If it ain't broke don't fix it
Discover my world at jkirkerx.com
|
|
|
|
|
I am using signalR client and service applications - both hosted as console apps.
I'm interested in making the following scenario work:
1. One Service starts up at "someaddress.org"
2. Second service starts up at "172.123.2.5"
3. Client starts and creates a hub proxy to an address "someaddress.org" which points to "172.123.2.3" by the DNS server
4. Client starts to receive updates from the server
5. At some point, the server crashes and is not available anymore
6. A Health checker service detects that the service is down, and updates the DNS server to make "someaddress.org" point to "172.123.2.5" where the second (identical) service is already up
At this point, the client is not able to establish connection with the new server and I'm trying to understand why and make it work.
If the first service is going down and up again all is working fine, but when the DNS record changes to another server it does not work anymore.
Any ideas?
|
|
|
|
|
Does the client recognise that the server has gone down and do a new DNS lookup? Also updates to DNS servers can take some time to proliferate through the system.
|
|
|
|
|
see my previous response for further details as i was testing it by changing the hosts file locally.
the client recognizes that the server has gone down - the following event is raised by it:
hubConnection.Error
|
|
|
|
|
Clients don't do a DNS lookup on every request. They do it one and cache the result. If the server goes down and someone changes the IP the DNS name points to, the clients are going to have to clear their DNS cache and do another lookup of the name to get the new IP.
As already has been said, DNS changes take time to propagate, so if the server goes down and the clients detect it, they MAY still get the old IP address for the DNS name they have. Changing the IP address in DNS is NOT the normal way to do failover.
If reliability is that important, Google for "IIS Failover Cluster" and start reading. This is far more complicated that just changing an IP address in DNS.
|
|
|
|
|
i wonder if the signalR client works this way.
i made a test locally - created an entry in the host file:
127.0.0.1 testaddress
both the client and the server are configured to use "testaddress" as host name. when it runs, all is working well, then i change the entry to another ip address:
127.0.0.3 testaddress
as expected - all is working well as the connection is still intact.
now if i stop the server,wait a few seconds, then change the entry back to:
127.0.0.1 testaddress
and restart the server - the connection never re-establishes - client generates errors and finally closes.
these are the events raised in this scenario:
hubConnection.Error - happens about 10 times
hubConnection.Closed
if i do the same scenario without changing the host name record (stopping the server, waiting a few seconds and restarting it), it returns to working well even if i wait a longer time - these are the events raised from the client in this case:
hubConnection.Error - happens a few times until i start the server again and then
hubConnection.Reconnecting
hubConnection.Reconnected
|
|
|
|
|
Yeah, that doesn't replicate what happens with an actual DNS entry.
It's not the SignalR client that handles the resolution and caching of the IP address from the host name. It's the TCP/IP stack that does it.
|
|
|
|
|
i cant seem to get my array to work,i am creating the gae hammurabi, and each button click creates a number for an amount of people starved, what im trying to do is save the data each year into its own index so that at the end of 10 years i could display each years starved aswell as the average ie.
year 1 = 0 starved
years 2 =3 people starved
etc
this is the code for the array i have so far which doesnt work
int[] starved = new int[10];
int average, sum = 0;
for (int i = 0; i<10; i++)
{
sum = sum + starved[i];
}
if (year == 11)
{
average = sum / 10;
label11.Text = average + " people died on average each year";
}
this is the whole code for the game
// variables int year = 1; int arrivals = 0; int popu - Pastebin.com[^]
any help would be appreciated
|
|
|
|
|
You are initialising your array but, in your code snippet there, you don't actually save any data into your array. In year 2, for instance, you don't have a corresponding
starved[1] = 3;
This space for rent
|
|
|
|
|
so i need to add
starved[0] =
starved[1] =
etc? if so what do i add after = each one? the value i need snt calculated until after the user as entered the info and clicked the button
thanks for the reply
|
|
|
|
|
So read the values from the user in a loop (Prompt him for each year's data), convert it to an integer:
string numberAsString = "12345";
int numberAsInteger;
if (!int.TryParse(numberAsString, out numberAsInteger))
{
Console.WriteLine("{0} is not a number!", numberAsString);
}
else
{
starved[i++] = numberAsInteger;
}
Sent from my Amstrad PC 1640
Never throw anything away, Griff
Bad command or file name. Bad, bad command! Sit! Stay! Staaaay...
AntiTwitter: @DalekDave is now a follower!
|
|
|
|
|
the original game doesnt ask you to input years or anything like that so i should need to either
also i need to use the values from each year to enter into a chart
|
|
|
|