Scalar Valued Function - Return Datediff As Decimal / Percent
Jan 4, 2011
I am currently writing a scalar valued function and I'm having a few issue with the returned result. I have narrowed the problem down to a calculation that convert the difference between two dates as a percentage/decimal. No matter what I try the return value is always a whole number
set @earnedpremium = (@premium * @pretripearnings) + ((@premium - (@premium * @pretripearnings)) * cast((datediff(day, @outdate, @experiencedate) / datediff(day, @outdate, @returndate))as decimal(5,2)))
The cast section needs to return the percentage, I know the rest is working fine through some elimination and testing.
I'm trying to build a function where I can pass in a percentage and it would have that percentage to return a true value. However I'm completely drawing a blank on how to make on such function.
An in-line table valued function in SSMS takes about 6 seconds to return 11088 records. The same function in VB .Net 4.0 using TableAdapters.InputTableAdapter.GetData (Created with data set designer) takes about 15 minutes complete.Both are executed from the same workstation.Why does this discrepancy exist?
When I type in cntrows. I get all my table variables except the one I want which is TotalComments. How do I return the Count from my scalar query? I have a Table Adapter named :
I am interested in developing a multi-language program that will have a main .NET GUI but will perform calculations by calling procedures from a Fortran95 dynamic link library file. Right now I am just playing around with a very simple project in order to get the interoperability between the .NET framework and a Fortran95 (*.dll) file working correctly. So far, I've been able to pass the Fortran95 (*.dll) file an array from VB, sum all the elements of the array using an intrinsic Fortran function, and pass the scalar result back to the .NET framework with no problem. However, if I try passing Fortran the exact same array, construct the transpose of that array using another intrinsic Fortran function, and try passing the transposed array back to the .NET framework I keep throwing an exception. I am not a programming wiz, but it appears that when Fortran stores an array in memory, the .NET framework doesn't know how to read that. I am looking for some guidance on how to pass an array from the Fortran95 (*.dll) file back to the .NET framework.
I want to retrieve total value from sales table in sqlcommand object. Below is my sample code.I will get error if there was no data in the tabel that matched my query saying that null could not be converted into decimal.
I would not get error if there was data that matched my query and returned the total value in tmpSales variable.My question is what is the best way to deal with this situation?
Dim CmdTmp As System.Data.SqlClient.SqlCommand
Dim tmpSales As Decimal
CmdSales = New System.Data.SqlClient.SqlCommand("SELECT SUM(Total) FROM Sales WHERE Date>= '1 Jan 2011' And Date<= '30 Jan 2011", ConDB)tmpSales = CmdSales.ExecuteScalar
cmd.CommandText = "SELECT * FROM [strfg].[dbo].[Myfunc] (@MyParam)" Dim myparam As New SqlParameter("@MyParam", a) cmd.Parameters.Add(myparam)
The function (runnig on SQL server) returns a table with four columns, one row.How do I call this function from Visual Basic? cmd.ExecuteScalar() is obviously not correct. In c++ I use a recordset. What is the equivalent in vb? Does anyone have a short example?
I have one scalar value function defined in sql database.It accespts 2 parameters and return an integer.Can anyone please help how to call UDF from vb.net using oledeb?
I have five text boxes & one button there in my form. I have written this code to get user`s current age. But problem is that I have to get user`s age with months.
My code to get age :
Private Sub Command1_Click() BDate = Text1.Text & "-" & Text2.Text & "-" & Text3.Text CurDate = Now
I am using the following code in my project. I want to find the number of days by given the last date and now.[code] for example, when BorrowDate is "01/Jul/2011" then the result is 7 days which it should be 10 to now.
One of the problems with datediff function is that even if the two dates are 31-12-2011 and 01-01-2012,it will show the difference as 1 year.How to overcome this problem?
DateDiff for the interval Day gives expected results for days past until present, but if the first date is further in time than the second date, it gives the difference +1. Is there something I'm doing wrong? For example, if I put in today for both, the difference is 0. If I put in yesterday and today, I get 1. This is all expected, but if I put in tomorrow and today, I get 0, and two days from now and today give -1. Why is the function giving altered results if the date is negative?
Here is the specific code.
Private Sub DateTimePicker1_ValueChanged(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles DateTimePicker1.ValueChanged TextBox1.Text = DateDiff(DateInterval.Day, DateTimePicker1.Value, Date.Now) End Sub
I have a project, a database with employee information (name, town, birthday, HireDate, etc). I have add custom TextBox (on fly), and on that TextBox a
TexBox1.text = DateDiff("d", HireDateDateTimePicker.value, Now) . Which is calculating how many days worker is working in company from HireDate,and Now.I have put code on event TextBox1_TextChanged. But, this means that I need to move cursor in TextBox1 to apply changes. I have also try with MouseMove. It works, but if I would have a huge database, then application will all the time reading script on MouseMove, and by that will slow down entire program.
want to return decimal number but because of "UBound" its keep displaying as integer how can i display decimal numbers?Public Class frmPrintbooks
Private Sub frmPrintbooks_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load For x = 0.0 To UBound(Form1.printBookName) lstPrintbooks.Items.Add(Form1.printBookName(x) & " " & String.Format("{0:C}", Form1.printBookPrice(x))) Next x End Sub
Just so it's known, this question is mostly academic, even though I tried to use the concept in a real-world solution. I realize the example is contrived, but I believe the concept is valid.I want to write some fluent code like this:
[code]...
I realize that I can't force an anonymous type into a specific type (like implementing an interface or some other class), and I don't want the overhead of defining a specific class just to match my desired fluent name with the actual method name. So I was able to make the code work like this:
copy(my_first_file).to.Invoke(my_second_file)So there is no IntelliSense or type awareness there, and I have to include the Invoke in order to have the method run. How can I get more type safety and exclude the Invoke method, under these constraints: Anonymous Type returned from Method No additional classes or interfaces Preferably, I do not want to pass in another parameter to the copy() method that tells what type to return, unless copy becomes a generic method (but I think that means defining another class/interface, which I don't want to do)
I have a Function within a data access layer, which accept a number of parameters. Among these is a decimal value, but in some cases the decimal value with be NULL, here is the code from the function
I am using the following code in my code file to pass the value to the function...
display a Decimal (or double) to elapsed time [h]:mm:ss (hours:minutes:seconds)using vb.net?
example:
if you were to type "1.34666666666667" into a cell in Excel then choose Custom Format [h]:mm:ss The result is an elapsed time of "32:19:12". Using the OADate function only runs on a 24 hour clock so this does not work for longer durations unfortunately...
I need a function which will Round a number UP to the specified decimal precision, exactly the same as how Excel's RoundUp function works:
Roundup(dblVal, intDecPlaces)
So I need the following:
Roundup(0.896523, 4) would return 0.8966
However, everything i've tried/found simply rounds to the nearest whole integer, or returns a normal rounded value, hence the above would return 0.8965
I've tried the following:
Math.Round(dblval, intPrecision, midpointrounding.awayfromzero) ' and Math.Round(dblval, intPrecision, midpointrounding.toeven)
And even custom functions, such as:
Public Function RoundUp(ByVal varValue As Object, _ ByVal iNum As Integer) As Double
'ignore the data types here, I was playing to see 'if changing any of the data types would swing 'the results (knowing full well they wouldnt make 'a difference, thats how fed up with this I am!)
Dim lNum As Long, xVal As Double, xVar As Object
xVar = Fix(varValue)
[CODE]...
I've even looked at converting this to a string, looking at the Xth decimal place, and incrementing it up by 1, then converting it back to a double, while this works (sort of) it seems to be a very roughshod way of doing it, and I'd rather do it mathematically than with lots of data conversion.
I have a series of files numbered from 1-80 I want to duplicate every 4th file of the series and have the numeric value pushed so that the 80 files become 100. I tried a For Loop going to 80 but for some reason I can't figure a good way out to push the value so that the next item in the list doesn't overwrite the last.My goal is to have the files copied from an original destination to a new one but with their name to be pushed up from its original.
Possible Duplicate: VB.NET Function Return If I have a function that returns a boolean, what is the difference between:Return False and Function = False