|
Is there a tutorial on this somewhere?
I'm going nuts here....
how many different variables do i need?
i'm writing a program that uses a function to accept a number as a parameter. make some calculations to it, and return it..
then sub main will output the results...
don't give me code please...i just want some pointers...
"I'm not me when I dream...anymore." - TRUSTcompany
|
|
|
|
|
thanks for the help! NOT!
______________________________________________
"I'm not me when I dream...anymore." -TRUSTcompany
|
|
|
|
|
Sorry for not responding dude, but really now....
There are examples on how to create/call functions in VB everywhere. Just download just about any sample VB code and you will see a sample of how to write and consume a function.
I did not answer this question because I felt that it was asked by someone that clearly needed to do some looking around themselves on the subject. Sorry...
Looking at the responses that you did get and what you found on your own you got the concept.
Just please remember that no one here OWES anyone an answer.
Just as a personal note… I hate function that have byref arguments. They are used alot in the Windows world and I still hate them. IMHO functions take in arguments and return a value. That is the pure way of thinking about it. When you use a function you always think of it as:
returnValue = FunctionName(arg1, arg2, … argn)
And the function looks as follows:
<scope> Function FunctionName(arg1 As Type, arg2 As Type, … argn As Type) As ReturnType
'define the return value to use
Dim retVal as ReturnType
'perform what ever calculations you need to do
'set the return value
retVal = answerToCalculation
Return ReturnType 'if you are using VB.NET
FunctionName = answerToCalulation 'if you are using VB6
End Function
The number of input args are up to what you need, and it is very clear as to what is being returned and where.
Using ByRef is called output arguments. I don't like them at all. As I see it, if the returned values does not end up on the left side of a function call then it is not a function, it is a Subroutine.
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
|
|
|
|
|
Ummm...pass it "ByRef"? Or make your Function return the Value? Function should ALWAYS Return something. So if you want the ByRef method, make it a Sub Routine. Your question isn't really clear, so I hope this Helps.
'Pass ByRef Example
Public Sub Test(ByRef MyValue as Integer)
MyValue = 5
End Sub
'Return a Variable
Public Function Test(ByRef MyValue as Integer) As Integer
Return 5 'VB.NET
Test = 5 'VB6 / VB.NET
End Sub
|
|
|
|
|
i asked the professor
what i forgot was that when u call the function you have to store the value somewhere: thanks though
ex: Sub Main()
Dim int as integer
int = MyFunction(5)
End Sub
Private Function MyFunction(ByVal int as integer) as integer
Dim sum as integer
sum = int * 10
return sum
End Function
----------------------------------------------------------------------------
This works right?
______________________________________________
"I'm not me when I dream...anymore." -TRUSTcompany
|
|
|
|
|
Hi all I have word automation project.
the project, opens the file, formats it, prints it and closes it.
but when the program execute word.document.close line, the message box asking , " do you want to save the file? yes, no , cancel " pops up.
How can I get rid of it...
I tried
word.document.close(False,True,True) <br />
but it give me compile error.<br />
<br />
<br />
thank you
|
|
|
|
|
To stop the save prompt you should just be able to call:
word.document.close(False)
using this I've opened a doc, applied a theme (thus changing it) printing then closed it without any prompts.
HTH
|
|
|
|
|
Ok this is my code
Dim sqlstr as String
sqlstr = "SELECT * FROM Products WHERE PrdName Like 'MS'"
Data1.RecordSource = (sqlstr)
Data1.Refresh
the string "MS" exists in so many records but the result is not what it should be ???
It returns 0 records found.
any ideas ???
Thanx
|
|
|
|
|
Try this...
sqlStr = "SELECT * FROM Products WHERE PrdName LIKE 'MS%'"
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
|
|
|
|
|
For the sake of this question I will use the old animal example that gets used in all the basic inheritance books..
Lets say that I have a base class called CAnimal and I inherit it to another class called CDog
Form within CAnimal, is there a way that I can get the type that is the parent (CDog in this case)? I would like to perform some processing differently in the base class depending on what subclass has called it.
If there some way I can do something like Me.Parrent.GetType("Cdog") ?
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
|
|
|
|
|
You can use TypeOf(Me) :
Public Class Animal
Public Sub Bark()
If TypeOf(Me) Is Dog Then
Console.WriteLine("Bark!")
Else
Console.WriteLine("I can't bark!")
End If
End Sub
End Class
Public Class Dog : Inherits Animal
End Class However, this is very bad design. You should provide generic functionality in the base class, and then override or extend that functionality in the derived class:
Public Class Animal
Public Overridable Sub Bark()
Console.WriteLine("I can't bark!")
End Sub
End Class
Public Class Dog : Inherits Animal
Public Overrides Sub Bark()
Console.WriteLine("Bark!")
End Sub
End Class If you can't provide generic functionality in the base class, you can make the method abstract (MustOverride):
Public MustInherit Class Animal
Public MustOverride Sub Bark()
End Class
Public Class Dog : Animal
Public Overrides Sub Bark()
Console.WriteLine("Bark!")
End Sub
End Class If the functionality is not applicable to all classes derived from the base class, consider removing it from the base class. For example, you wouldn't want your Cat class to have a Bark method!
"These people looked deep within my soul and assigned me a number based on the order in which I joined." - Homer
|
|
|
|
|
I want to thank both of you for your comments on this… After taking a long hard look at the architecture I had originally selected I finally decided to refactor things a bit and moved away from the inheritance aspect since there were some apparent, albeit subtle, differences in the implementation between what each child class needed. I ended up using an interface style and backed it up by using come common helper functions behind the scenes. I even ended up lowering my LOC count by about 30% and dropping the complexity of the design a significant amount because of it.
I also noticed that the problem with my chosen implementation seemed to become apparent when I started the steps of documenting the class with XML docs. There were things showing up in the docs (I am using Ndoc) and things exposed to the outside world that I did not want exposed. The process of building the documentation for the library pointed that out very quickly.
Thanks again…
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
|
|
|
|
|
Actually, a better way would be to provide a ReadOnly Property called "Type". You can have this Property return an Enum (if you know how many ClassTypes you will have) or just a String if you Like. You could then Override the Property in the Derived Classes so that they can Return what Type of Class they are as well.
I find that Enums are great! Especially if you are allowing other Developers to use your Classes (since they don't know what Types to expect, Enums help a lot!).
'Base Class
Public Class Animal
'Enum
Public Enum AnimalTypes
Animal
Dog
Cat
Bird
End Enum
Public Overridable ReadOnly Property Type() As String
Get
Return "Animal"
End Get
End Property
Public Overridable ReadOnly Property Type2() As AnimalTypes
Get
Return Animal
End Get
End Property
End Class
'Derived Class
Public Class Dog:Inherits Animal
Public Overrides ReadOnly Property Type() As String
Get
Return "Dog"
End Get
End Property
Public Overrides ReadOnly Property Type2() As AnimalTypes
Get
Return Dog
End Get
End Property
End Class
|
|
|
|
|
I am taking a good look at what both of you have said...
I can understand why Richard Demming thinks that this would be very bad design, but in my defense I had a specific reason for doing it.
1 - The base class provides all but a very little part of the functionality of the library.
2 - The base library only exposes 3 classes that derive from the base class, and these classes can not be inherited from any further.
3 - The base class implementations of each method very only slightly in how certain database connections are handled based upon what class has inherited the base class.
4 - The bass class implementations are not really overridden. The derived class calls the base class implementations by using MyBase.Methodname.
I considered using an interface and some helper functions here in place of inheritance, but because the implementations are so close I was seeing the possibility for a lot of duplicated code.
As for your suggestions about using Enums, I totally agree I use enums wherever I can. In fact I have been accused of their overuse if you can imagine such a thing. I figure that, besides the other benefits, enums offer a way for the user to enter in parameters in a way that removes a large likelihood of error. They can't just make up values that way, but have to pick form a list.
Paul Watson wrote:
"At the end of the day it is what you produce that counts, not how many doctorates you have on the wall."
George Carlin wrote:
"Don't sweat the petty things, and don't pet the sweaty things."
|
|
|
|
|
Hello,
I have following code
<br />
Dim i As Integer<br />
i = 3/2<br />
from my knowleadge, if you set the variable as an integer, when you divide, (from the example) suppose to be i= 1 but right now i=2 because the answer i = 1.5 and automatically set the i to 2 . why is that? I don't want the decimal numbers, I want the integer. How can I fix that problem
Thanks
|
|
|
|
|
From my knowlage of vb, when it preforms type casting for you, it will always try to round. More information on this in the MSDN under cint(). If you just want to truncate your number, in this case either fix() or int() will do the job, however there is a subtle difference (regarding negetives) between them.
Try:
i = int(3/2)
Now i = 1
|
|
|
|
|
|
its rounding up...
.5 or higher rounds it up..
i believe there is a function to format numbers...i can't remember it though..sorry
"I'm not me when I dream...anymore." -TRUSTcompany
|
|
|
|
|
hi,
i have created an ActivexDll in vb and used it in a standard Exe by using CreateObject Function instead of selecting it in the References.I am Getting the output,but after this if i try to make the dll again by making some changes,i am getting the error "Permission denied:'C:\WINNT\System32\Project2.dll".Can anyone help me how to get rid of this problem?How can i release the Object created by CreateObject?This has become a headache.I shall be very happy if anyone provides a solution for this
shankar
|
|
|
|
|
Try the following - may help
set MyObj = Nothing
Think that should help. Alternatively, do you have your control embedded on a form in the project - if you do, VB6 will have to create an instance of it to display on the form (can't remember why, but there is a reason). If it has to do this, then the file will be locked, and the permission denied message may result
|
|
|
|
|
You will have to close both dll file and Vb application which it is calling from your application.
and set createdObj = nothing.
I hope this will solve your problem.
Thanks!
Manoj Madhavan
|
|
|
|
|
whilst you are debugging, you could install the component in COM+ with the Interactive User as the identity.
Then when you need to recompile the componet, just choose ShutDown on the COM+ package.
Also you could add reference to the COM+ typelibraries etc, and then search for the application and unload/shutdown it in code. THis has worked very well for me whilst making a Checkout system for an ecomm site.
|
|
|
|
|
having performed an update in a datagrid, i get this message box: " insufficient key column information for updating or refreshing" (even though the table in the database updates successfully), why is this? Thanking you!
|
|
|
|
|
mcm wrote:
having performed an update in a datagrid, i get this message box: " insufficient key column information for updating or refreshing" (even though the table in the database updates successfully)
There could be a number of reasons for your problem. One of the most common reasons is that your data was retrieved from multiple tables. The other tables would like to try updating, but they can't because the primary key is not available in the retrieved data.
If you could provide more specifics, you might get a more useful response. For example, what kind of data are you retrieving (Access, SQL, Oracle)? Are you using ADO, ODBC, or something else to get the data? We need enough information to "debug" the problem.
|
|
|
|
|
im so sorry for my lack of information - the following is code relating to populating the datagrid:
Dim strType As String
strType = DataComboType.Text
Dim strDesc As String
strDesc = DataComboDesc.Text
'selecting the appropriate values
Dim findSQL As String
findSQL = "SELECT Price.ProductCode, Product.Description, Price.Price " & _
" FROM ProductType INNER JOIN (Product INNER JOIN (PriceDescription INNER JOIN Price ON PriceDescription.PriceCode = Price.PriceCode) ON Product.Code = Price.ProductCode) ON ProductType.TypeCode = Product.TypeCode " & _
" WHERE (((PriceDescription.PriceDesc) = '" & strDesc & "') AND ((ProductType.Description)='" & strType & "'))"
Set RS = Conn.Execute(findSQL)
'refreshing the grid
Adodc3.RecordSource = findSQL
DataGrid1.Visible = True
Set DataGrid1.DataSource = Adodc3
Adodc3.Refresh
'DataGrid1.Refresh
cmdSave.Enabled = True
i wish to edit details in the grid once populated but it returns that error when i make any changes in the grid - its access im using in the backend. if you require anymore information, let me know - thank you so much for your time!
|
|
|
|