|
I've been using VB since VB6 almost 20 years ago and have used it to build full blown accounting systems and many other business applications. I have never found it lacking for anything I needed to do but what bugs me is that whenever I read articles about Visual Studio, the focus is on c++ and c# and VB is relegated to footnotes or sometimes entirely forgotten.
Many times I've thought of switching to one of the C based languages but is there actually a reason for me to delve into this?
|
|
|
|
|
C# and VB.NET mostly share the same language features, and, of course, they both have access to the entire .NET Framework.
The problem with VB.NET is it's verbose, and it's currently not really supported by .NET Core 3.x yet. There's console app and unit test support, but nothing for WPF or WinForms, though that is in development.
If I were you, I would pickup C#. It's really not that much different from VB.NET. You already know most of it. You just don't realize it. You get to replace the verbosity with curly braces and semi-colons!
|
|
|
|
|
Dave Kreskowiak wrote: The problem with VB.NET is it's verbose, I actually miss that about VB.NET since I've been doing C# for so long now.
I'd much rather have a bunch of "end"s instead of a bunch of "}"s all strung together.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
C# and VB.NET can be translated to each other by a machine; it's mostly different keywords in a different order. C# is as C-based as VB.NET is VB6 based; they share stuff, but that's it.
VB.NET is not "underrated", but it is assumed that anyone who does VB.NET can at least "read" C# code, as the used framework is the same.
Chris Nic wrote: but is there actually a reason for me to delve into this? If there's no need for it, you could do it for fun.
GitHub - icsharpcode/CodeConverter: Convert code from C# to VB.NET and vice versa using Roslyn[^]
Has a visual studio extension; you could have VS translate a random page of VB.NET of your current projects to see how the C# equivalent looks.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I used to use VB and then VB.Net but most jobs are looking for C# so I switched. The switch was very easy, but part of that was because I started out in Pascal and C to begin with.
I do miss some of the easier things in VB but switching to C# was easy to do.
A lot of developers seem to have a superior view of themselves and C#, likely because of the word "Basic" in VB, but as you said, I never had a business requirement not be able to be met by VB. Years ago I wrote a chat application and chat server that interfaced with an Avaya phone system and did that in VB.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
ZurdoDev wrote: A lot of developers seem to have a superior view of themselves and C#, likely because of the word "Basic" Most devs' don't seem to understand that C# is a VB, just with different keywords. It is a runtime, like VB, compiles to a p-code, and has a memory manager.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
Good point.
Social Media - A platform that makes it easier for the crazies to find each other.
Everyone is born right handed. Only the strongest overcome it.
Fight for left-handed rights and hand equality.
|
|
|
|
|
Don't explain that at the coffee-machine though; most C# programmers don't like the idea
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
I describe C# as VB with its Sunday clothes on
|
|
|
|
|
ZurdoDev wrote: A lot of developers seem to have a superior view of themselves and C#, likely because of the word "Basic" in VB
Yes, this arrogance (based upon a false premise) is something that annoys me too.
|
|
|
|
|
Like you I built a lot of very valid business applications in VB6 then VB.net
In the early days of the .net era I found the lack of VB.net examples and support extremely frustrating and changed to c#, the wealth of c# code out there is just incredible and was well worth the minimal pain of changing to c#. There is no better reason to change (except possibly the lack of support for VB in Code).
Never underestimate the power of human stupidity -
RAH
I'm old. I know stuff - JSOP
|
|
|
|
|
Mycroft Holmes wrote: I found the lack of VB.net examples and support extremely frustrating and changed to c#, the wealth of c# code out there is just incredible and was well worth the minimal pain of changing to c#. There is no better reason to change
Yup, I could see how it was going to go with VB.Net and changed to C# for the same sort of reasons.
|
|
|
|
|
When I save the attendance date from a datetimepicker as a date prior to today's date it records acceptable format but not what I really want. When I select today's date it records a date like this 2020-02-25 08:28:00.946341400.
The secondary issue is what I eluded to above. I set the custom format in the form_load to "MM, dd, yyyy" and when I select a date prior to today's date it records the date like this 2020-01-29 08:34:25.
Here is the Save Button code
Dim inserted As Integer = 0
For Each row As DataGridViewRow In dgvAttend.Rows
Dim isSelected As Boolean = Convert.ToBoolean(row.Cells("chkbox").Value)
If isSelected Then
Access.AddParam("@DTE", dtPick5.Value)
Access.AddParam("@SID", row.Cells("StudentID").Value)
Access.AddParam("@LN", row.Cells("LastName").Value)
Access.AddParam("@FN", row.Cells("FirstName").Value)
Access.ExecQuery("INSERT INTO Attend (TrainDate,StudentID,LastName,FirstName) " &
"VALUES (@DTE,@SID,@LN,@FN); ")
inserted = inserted + 1
End If
Next
If inserted > 0 Then
MessageBox.Show(String.Format("{0} records inserted.", inserted), "ACJTracker", MessageBoxButtons.OK, MessageBoxIcon.Information)
End If
Here is the form load
dtPick5.Format = DateTimePickerFormat.Custom
dtPick5.CustomFormat = "MM, dd, yyyy"
RefreshAttendGrid()
Here is the refresh Grid
dtPick5.Format = DateTimePickerFormat.Custom
dtPick5.CustomFormat = "MM, dd, yyyy"
' RUN QUERY
Access.ExecQuery("SELECT StudentData.StudentID, StudentData.LastName, StudentData.FirstName FROM StudentData ORDER BY StudentID ASC")
' REPORT & ABORT ON ERRORS
If NoErrors(True) = False Then Exit Sub
dgvAttend.DataSource = Access.DBDT
Does anyone know how I correct these issues?
|
|
|
|
|
The issue is how you are displaying the saved value. Setting a date format on a DatePicker just changes the display. The actual value will be stored as a DateTime value, so when you print or display it in the future you will need to set the required format.
|
|
|
|
|
It is actually saving it to the table in these formats. How can I get the app to save it in the correct format in the access table?
Also, what causes the ..946341400?
|
|
|
|
|
No, it is saving it as a Date/DateTime value as shown in your code. As I said, the format only applies when you display it.
|
|
|
|
|
Thanks for the answer. I figured it out once I stopped over thinking it. dtPick5.Value.ToString("MM/dd/yyyy" did the trick for both issues.
|
|
|
|
|
You should never store dates as strings, use Date or DateTime values, and only apply formatting when it is displayed. For example the date 01/02/03 could be 1st February 2003, 2nd January 2003, or even 3rd February 2001, depending on where you live.
|
|
|
|
|
If dtPick5.Value.ToString("MM/dd/yyyy" isn't the correct way then can you post an example of how to properly do it?
|
|
|
|
|
At the risk of repeating myself again and again: use the Value. That way the date can be formatted for display into any culture.
|
|
|
|
|
|
Member 11866893 wrote: Heaven forbid you repeat yourself or provide a code example.... The explanation is spot on, but to expand with code;
dim someDateString as String = dtPick5.Value.ToString(.. This creates a text, with the date formatted in some culture.
dim someDate as DateTime = dtPick5.Value Here the value is taken as is, without formatting. It is stored as a decimal value, with "days" in the integer part from a given offset, and the decimal part representing time. It is a format-independant version, and that's how it should be stored. Internally, your application should use DateTime values, and only formatting them as strings when displaying.
Saving the value in DateTime type is important; if you use a localized and formatted version tht is actually a string, the computer will have to convert that to a real DateTime for each operation.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|
|
You decently cannot insult those who try to help.
"Five fruits and vegetables a day? What a joke!
Personally, after the third watermelon, I'm full."
|
|
|
|
|
Ah yes, the lazy person's fallback position when you don't get someone else to do your work: abuse.
|
|
|
|
|
It's the VB forum; it looks like a frustrated coder. Don't take it as a personal insult.
Bastard Programmer from Hell
If you can't read my code, try converting it here[^]
"If you just follow the bacon Eddy, wherever it leads you, then you won't have to think about politics." -- Some Bell.
|
|
|
|