Datetime format read from Excel file - c#

I have a little funny problem that I would like to share with you and am thankfully expecting from you some replies because I don't have an answer myself.
I have a DataGridView (dgv) in which one column is saved for datetime display.
I initialize it like a date string often used in MySQL, i.e 2011/1/3 in the dgv construction, and sure enough it displays correctly as a human readable string, that is 1/3/2011. I then save all the displayed content into another excel file.
After that I try to reopen it, here is the code after pressing the Open button
private void OpenClicked(object sender, ....)
{
dataGV.Rows.Clear();
OpenAndBindXls(filename,dataGV);
}
Sadly, the datetime display is not as expected, it is all 5762,3552,3354 etc.
I have two real questions,
[1] How can I explain the above problem ?
[2] In the above code, it only deletes rows, what methods should I use if I would like to delete even the columns but still keep the instance alive?
[Edit] Sorry the second question was made when my mind wasn't fresh at all, I noticed my stupidity. I correct it by just add dataGV.Columns.Clear(); :-D. How stupid! Well I am tired, I will take some sleep to refresh my mind now. Thanks anyway for reading.

I think that you are getting the date time format in ticks and not as you expect.
You can try either converting the data before binding or use the CellFormatting event to convert the value to a visual datetime:
http://msdn.microsoft.com/en-us/library/system.windows.forms.datagridview.cellformatting.aspx

Related

Filter elements in Revit and set parameter

Hello everybody,
around two or three month ago I started to learn Dynamo for Revit... finally :)
After learning and testing a lot, I got a few own scripts working. Then I learned Python, because I couldn't create the next script only with Dynamo-Nodes.
Then I thought "Let's see how difficult it is to get something done as a PlugIn".
I watched some Videos and read a lot of stuff.
Finally I got the Revit-AddIn-Wizard installed and made my first small Test-PlugIn.
Great...
Now I have a few problems which I do not understand... so I thought I will try my luck here... because I got so much information and help, reading through this site.
My goal was/is the following: (I tell you what I have now)
A form with a few buttons, comboboxes and a DataGridView.
I can load an Excelfile, click on "Show" to show it in the DataGridView.
The header of each row will be automatically put into 3 comboboxes.
In the first combobox you select the first search-parameter, in the second you CAN select another search-parameter and in the third combobox you select the parameter you want to set.
I have a checkbox to switch from type- to instance-parameter for the search- and the set-operation.
There is also a button which shows another small form with a list of categories (I won't search for ALL, only nearly all modelcategories).
PlugIn
I took me a lot of "watching Videos, reading through the internet, testing, testing and testing".
Thanks to this site here and a few others... I managed to get this whole PlugIn nearly 100% working.
But now I have a few strange issues and I have absolutely no clue on how to fix them or if it is possible. And I really hope that someone can help me.
First... I just tell you my problems and perhaps someone can say "this really IS an issue!" or that it is possible to get it done. Then I would post some code.
So... what do I do?!
1. I have a FilteredElementCollector which filters ALL elements.
2. Depending on my "Type/Instance-Checkboxes" I do .WhereElementIsElementType OR .WhereElementIsNotElementType.
3. Then it passes a MultiCategoryFilter to get the big list down to only the modelcategories.
4. Next, the collection passes one of ten different "methods" depending on all settings. There I filter this collection depending on the searchlists-comboboxes. When the combobox says "Familie" or "Typ" then it filters for ".BuiltInParameter.SymbolFamilyName" or ".Name" otherwise it just uses ".LookupParameter".
After that I have a collection with only the elements of selected categories which contains the values from the Excellist.
5. Depending on what my search- and set-settings are (e.g. search for type and set instance) I have to get the instances from the collected types or the other way around.
6. Then I pass it down to another method where I finally set the parameter.
So... Excelheader goes into comboboxes, depending on what you select in there it creates lists with the values of the selected rows.
I hope you all understand.
Now... where are my problems?
When I search for type-familynames or instance-parameter and set a typeparameter it works for ALL categories without any error.
1. When I try to set an instanceparameter (doesn't matter what my search-setting are) it works for all "normal" families but not for the systemfamilies (e.g. walls, floors, pipes etc.). No error, just nothing happens WHY? It seems that I cannot set an instance-parameter for system-families.
2. Roofs, Stairs, CurtainPanels and GenericModel make problems when I search for a typeparameter Error is something like "The object reference was not set to an object instance". Only with these 4 categories and it doesn't matter what I want to set... but when I search for family-/typeNAME or Instance-Parameter, then I can set type or instance and it works (except instance for sysfam).
3. When I try to search AND set an instance-parameter it works for ALL categories EXCEPT if one wall does not contain a search value... it really is enough that ONE wall does not have a search-param-value that everything will be cancelled.
I have a few other small problems... but I hope someone can help me with these problems... I would be extremely thankfull
greetings and have a nice day or night :)
Philipp
Tl; dr.
The three problems you describe sound like your own. I have no heard anybody else runAsk three separate questions and provide three separate minimal code snippets describing how they arise,. into those. I suggest that you create three separate independent minimal reproducible cases to demonstrate all three issues. Chances are, when you simplify and minimalise your code, the problem will go away. If it does not, it might just possibly be in a small and manageable enough state for other people to help you take a look at it. Given the long-winded description above, nobody in the world can help you.
Thank you for your answer Jeremy,
as I said, as a first start it is ok for me if you don't say "With theses categories, there are indeed some issues!"
I think I've managed to create 3 small examples of my problems.
For each problem I made a zip-file containing the complete visual-studio folder, a small exampleproject and a readme.txt with (I hope) enough information to understand everything in detail.
Problem1
Problem3
You only need to compile them or copy the .addin and .ddl files into the Revit AddIn folder. Then you get the new ribbons.
Short problem summary = I get problems when searching for parametervalues and setting values to another parameter.
Edit: I just solved the 2. problem when searching for familynames and setting system-families-parameter.
I used:
ElementClassFilter ecf = new ElementClassFilter(typeof(FamilyInstance));
FilteredElementColletor colle2 = new FilteredElementCollector(doc);
colle2.WherePasses(ecf);
I simply deleted the ClassFilter and do it now like in the other cases where I need instances.
FilteredElementCollector colle2 = new FilteredElementCollector(doc);
colle2.WhereElementIsNotElementType();
The 1. and 3. problem still exist :/
I would be thankful for any help someone can provide :)

Calculation Between Datetimepicker and Textbox

i have a datimepicker Date Recieve and Assumed Date of Arrival and a textbox of LeadTime
all i can see in the internet is a calculation between two datetimepicker , but i want to do is just like this
int date=0;
int lead_time = Int16.Parse(tb_leadtime.Text);
date = dt_recieve.Value - lead_time;
dt_arrival.Value = "MMM/" + date + "/yyyy";
any suggestion and opinion will be helpful.
I see a big problem in your code. Appending textbox.Text directly to an sql string is not safe. You are exposing your system for sql injection. I would recommend always use Stored Procedures with definite input parameters and errors. For your actual question could you please write a little more detail to understand the problem better? I may be abel to help you.

Target and Copy selection from one Excel file to another - C#

Quite some time ago I created a Powershell script to do what I wrote in the title: Copying a selection from File-A to File-B. The way I need it (and the way I did it) is to open a "Template" file when the application starts, the user selects a range, then they have 4 option buttons. The most-used is "Copy Selection", which will copy the contents of the range selection to all of the Excel files in a specific directory. With Powershell this works (although it took a long time to figure out) with the following code:
$strRow = $Excel.ActiveCell.Row
$strColumn = $Excel.ActiveCell.Column
$Range = $sourceWorksheet.Cells.item($strRow,$strColumn)
$Range.Select
$Excel.Selection.Copy() | Out-Null
foreach ($item in $files)
{
$destinationPath = $item.FullName
$destinationWorkBook = $Excel.WorkBooks.Open($destinationPath)
$destinationWorkSheet = $destinationWorkBook.worksheets.item(1)
$destRange = $destinationWorkSheet.Cells.item($strRow,$strColumn)
$destRange.Select
$destRange.PasteSpecial() | Out-Null
$destinationWorkBook.Close($true)
}
That works fine, but I obviously want to get rid of Powershell. I've created a C# application using WPF that will look and work great, I just have to get the logic working. I can't seem to actually target a range selection. I've tried a number of methods and properties, and none seem to get what I need. I can get the actual "selection" cell, but I can't get any type of range. The object I retrieve generally have Rows and Columns properties, so if need-be I guess I could extrapolate that information...but there's gotta be a better way.
Right now the closest thing I have would be to use Application.ActiveCell.Copy(); (or Select), but it seems to have issues when I try pasting it.
Any ideas? I can't seem to figure out why this isn't working.
EDIT: I've solved my own issue...sorry if anyone wasted time looking at this.
I'm an idiot...I spent a bit more time and figured out how to do it. The below code works perfectly - the main issue I was running into is that using Worksheet.Cells.item requires a bracket. I still have to loop through the documents to apply to, but this should take care of the actual logic:
int intRow = myApp.ActiveCell.Row;
int intCol = myApp.ActiveCell.Column;
myApp.Selection.Copy();
Range destRange = mySheet.Cells.Item[intRow,intCol];
destRange.PasteSpecial();
Hope I didn't waste anyone's time and they can figure this out now!

Adding blank space as one of my variable

I want to write some data about the person's in a file. And while adding those data i want to add blank space if a particular data for that person is not available.
ex: I want to have " " in place of SSN if person doesn't have one.
Thanks,
Uhm... sorry for this kind of answer, but I really recommend you read up on file I/O. As Brad said, it's kinda unclear what your problem is.
I, for one, think your problem is not actually a problem: if you know how to print to the file all the other information, you surely must know how to add some blanks.
Again, sorry I'm not giving a straight answer, but trust me: I could tell you ten different ways of handling record-keeping when certain data is undefined for a record, and you would still learn much more (and much more solidly) reading a tutorial or two.
If all you're doing is writing out variables from an object, you could just use the String.IsNullOrEmpty method before you return the value you want to write.
Something like
return !String.IsNullOrEmpty(SSN) ? SSN : " ";

How to Display the same passed variables on the crystal report using C#

I'm really sure that the title of my question depicts what i mean.i guess that's why i can't find that much on google.I think it needs to be explained.
Basically i've manage to pass programmatically discrete values to my report successfully.
Now i wanted to make use of the A4 paper format to have 2 A3 format.that means i want to have twice the display of the report.So i naively copy what i already did to the bottom of the report.The duplicated ones are not displaying for some reason.
The only workaround i can find is to create same set of parameters with different names and pass the same values to them.But that doesn't sound good to me and there are about 12 parameters.It should just be 24 if i want to do that.How you guys solve this?
Thanks for reading.
PS: using C#
Can you right click and choose Format Field and see if the "Suppress" or "Suppress if duplicated" field is ticked?

Categories