|
just a sec...my english is not so good
let me rephrase every thing:
- You have a datagridview with 2 columns.
- Now this datagridview displays a text from a DataSet.
(Till here its fine.)
Quote: and set an integer field in the target record based on the text field selected in a combobox.
- This is confusing
Quote: One can display the appropriate text values with the drop down, but nothing gets set.
What's making me crazy is that that form, if pulled out of the project, made a standalone in its own project, hitting the same database, of identical dataset and everything else I can find, works fine.
You have clubbed so many things in just one sentence. Its hard to simulate what you are saying(It is also my lack of knowledge)but i request you to put forth a simpler version of this question.
Thanks
|
|
|
|
|
I'm new to LINQ / lambda expressions. I have a list of documents that contains a string field for the creation date. What should the where clause look like to return all documents created in a given date range (eg - within the last year)?
|
|
|
|
|
Assuming you mean you have a Doc class like this:
public class Doc
{
public string Title { get; set; }
public string Date { get; set; }
public Doc(string t, string d)
{
Title = t;
Date = d;
}
}
Then it's pretty simple:
List<Doc> docs = new List<Doc>() { new Doc("Title1", "2014-1-10"),
new Doc("Title2", "2013-12-31")};
var inYear = docs.Where(d => DateTime.Parse(d.Date).Year == DateTime.Now.Year);
But personally, I'd store the creation date as a DateTime, rather than a string.
Never underestimate the power of stupid things in large numbers
--- Serious Sam
|
|
|
|
|
Thank you for the reply. Personally, I agree with you on the string as a datetime comment. Unfortunately, this pre-dates me and I guess it makes life easier in other areas of code.
To add a little clarity to my question. I'm looking for a range check, >= startdate and <= enddate?
|
|
|
|
|
littleGreenDude wrote: I guess it makes life easier in other areas of code.
Somehow I seriously doubt that. I have yet to find a single instance of storing a date/time as a string making it easier to do anything date/time related.
It's far more likely that the previous Muppet didn't know what he was doing.
|
|
|
|
|
So either do two checks in one Where:
DateTime earliest = new DateTime(2013, 12, 1);
DateTime latest = new DateTime(2014, 1, 14);
var inYear = docs.Where(d => DateTime.Parse(d.Date) >= earliest && DateTime.Parse(d.Date) < latest); Or do two Wheres:
DateTime earliest = new DateTime(2013, 12, 23);
DateTime latest = new DateTime(2014, 1, 14);
var inYear = docs.Where(d => DateTime.Parse(d.Date) >= earliest).Where(d => DateTime.Parse(d.Date) < latest);
Now go and kick the idiot who decided string is a good storage medium...
Never underestimate the power of stupid things in large numbers
--- Serious Sam
|
|
|
|
|
Hopefully, this will give you some idea as to how to do this:
using System;
using System.Collections.Generic;
using System.Linq;
namespace LinqDateTest
{
class Program
{
private readonly Dictionary<string, MySimpleClass> _mySimpleClasses = new Dictionary<string, MySimpleClass>();
static void Main(string[] args)
{
new Program().AllocAndTest();
}
private int _index = 1;
public void AllocAndTest()
{
Alloc("10/03/2024");
Alloc("10/12/2013");
Alloc("11/12/2013");
Alloc("12/12/2013");
var results = (from p in _mySimpleClasses
let myDate = DateTime.Parse(p.Value.MyStringDate)
where myDate > DateTime.Now.Subtract(TimeSpan.FromDays(100)) && myDate < DateTime.Now
select p.Value).ToList();
foreach (var value in results)
{
Console.WriteLine("Index {0}, Value {1}", value.Index, value.MyStringDate);
}
Console.Read();
}
private void Alloc(string dateValue)
{
_mySimpleClasses.Add(dateValue, new MySimpleClass { MyStringDate = dateValue, Index = _index++ });
}
}
public class MySimpleClass
{
public string MyStringDate;
public int Index;
}
} Saying that, I really wouldn't like to push the idea of using a string to represent the date. If the string value isn't parseable using Parse, the whole Linq query will blow up. A simple extension will take care of this:
public static class DateExtensions
{
public static DateTime ToSafeDate(this string value)
{
DateTime parsedDate;
if (!DateTime.TryParse(value, out parsedDate))
{
parsedDate = DateTime.MinValue;
}
return parsedDate;
}
} This would turn the Linq query into:
var results = (from p in _mySimpleClasses
let myDate = p.Value.MyStringDate.ToSafeDate()
where myDate > DateTime.Now.Subtract(TimeSpan.FromDays(100)) && myDate < DateTime.Now
select p.Value).ToList();
|
|
|
|
|
Hi Gang,
I am having a big brain cramp and cannot find anything on this anywhere. I have a small winforms app that will allow me to create configurations and serialize them to files. The app will read the files from a directory and display them in a datagridview along with a details view for the selected item in the datagrid. I have a binding source and a binding navigator. Here is the issue. Initially there will be no configuration files so the List<Config> will be created but will be empty. This in turn disables the Navigator so the AddNewItem button is disabled so nothing can ever be added. As a work around for now, I create a blank object that has a name <ChangeMe> so that there is at least one record. Having this one record enables everything and it all works great. So my question is, how can I get it to enable when the list is empty?
Thanks!
Mondis
|
|
|
|
|
Is the list empty or is it null? I can see null disabling the navigator but not an empty list. I don't have the time to test it right now.
|
|
|
|
|
The list is empty. I have a local class level variable defined as
List<Config> configs;
In my load routine I initialize it.
configs = new List<Config>();
I then check for config files and add those to the list. If nothing is added then the empty configs list is added to the bindingsource.datasource as
bindingsource.datasource = configs;
The kluge is to add an empty item to the list and everything works,but that doesn't seem right. I can also delete that empty item and the Binding Navigator is still enabled, which doesn't make sense at all.
Thanks!
Mondis
|
|
|
|
|
OK, it was a thought. I still can't test the thing yet. That won't happen until tonight, if things go well.
|
|
|
|
|
No problem, thanks. I am racking my brain over this one. It just doesn't make any sense to me at all. If by some unforeseen reason I find an answer I will post back, but I haven't had any luck in 2 days.
Mondis
|
|
|
|
|
I wrote this line of code this morning and thought it was great. Maybe a bit confusing, but fun
orderItem.ReturnAuthNumber = order.OrderNumber + ++currentReturnAuthCount;
The three + signs in a row make me smile.
Hogan
|
|
|
|
|
Not really the right place for this: this forum is for questions rather than "I like this" type comments.
Why not take it here: http://www.codeproject.com/Lounge.aspx[^] where it might be better appreciated?
Never underestimate the power of stupid things in large numbers
--- Serious Sam
|
|
|
|
|
I was under the thought that the lounge was not for code... I even marked it as a non-question so as not to confuse anybody... Guess I'm the confused one.
Hogan
|
|
|
|
|
The Lounge isn't for programming questions rather than isn't for code: it's for talking rather than coding if you like. If it's a discussion about how it amuses you, then that's fine. If it's about how it works, or how to fix it, then that's a no-no.
This forum is for code - though talking does go on - it's deliberately more technical here.
Never underestimate the power of stupid things in large numbers
--- Serious Sam
|
|
|
|
|
He probably could've chucked this into the Weird and Wonderful too.
"I've seen more information on a frickin' sticky note!" - Dave Kreskowiak
|
|
|
|
|
I thought the Q&A was for questions. This is a 'discussion' board. Seems harsh to me.
Regards,
Rob Philpott.
|
|
|
|
|
Hogan, if you really want to blow your mind, you could end up with something like this:
int currentCount = 12;
int output = 12;
int mindBlowing = 4;
mindBlowing += output++ + ++currentCount;
|
|
|
|
|
I'd rather he didn't!
Mind you, it could be worse:
int plus = 12;
plus += plus++ + ++plus; But if I used that in actual code I should be shot!
Never underestimate the power of stupid things in large numbers
--- Serious Sam
|
|
|
|
|
That is so wrong, it's actually beautiful.
|
|
|
|
|
snorkie wrote: The three + signs in a row make me smile.
Myself I smile when I hear 3 years after I left a company that my code is the most respected because the developers that followed me have found it is the easiest to maintain.
That is me though.
|
|
|
|
|
hi,
i dont english good.
i want in win application export data to table located in web sql
in mode without connect internet.i will do export in offline mode.
best regards
|
|
|
|
|
If your database is located on a different server, you cannot export data to it without a connection.
|
|
|
|
|
i dont english good. i should connect to internet?
i will export data to sql located web host.
in offline mode i can export data in c#?
please help me
best regards.
|
|
|
|