|
Hope this helps;
Class Base
Public Function GetClassName() As String
Return System.Reflection.MethodBase.GetCurrentMethod().ReflectedType.Name.ToLower()
End Function
Public Function GetCallingMethodName() As String
Return New StackTrace().GetFrame(1).GetMethod().Name
End Function
Public Function GetMethodName() As String
Return New StackTrace().GetFrame(0).GetMethod().Name
End Function
End Class
Class SubClass
Inherits Base
End Class
Module Module1
Sub main()
Dim s As New SubClass
Console.WriteLine(s.GetClassName())
Console.WriteLine(s.GetCallingMethodName())
Console.WriteLine(s.GetMethodName())
Console.ReadKey()
End Sub
End Module
Bastard Programmer from Hell
|
|
|
|
|
The Reflection will give you the "Base" name. The StackTrace would give you the name of the calling Mehtod. I needed the name of the type of the subclass.
I know Sub is not a valid name, but I was making a quick example program, my actual program is a lot more complex, but I just needed the type of the subclass.
|
|
|
|
|
if you want information about the caller, Environment.StackTrace may be useful.
if you want information about the base class of some object, look at Object.GetType().
and then there is reflection.
Luc Pattyn [My Articles] Nil Volentibus Arduum
The quality and detail of your question reflects on the effectiveness of the help you are likely to get. Please use <PRE> tags for code snippets, they improve readability. CP Vanity has been updated to V2.3
|
|
|
|
|
Thanks mate, I needed the Object.GetType(), used Me.GetType() works too. Thanks for the help, both of you!
|
|
|
|
|
Hi,
I have to run crystal reports runtime before/after installing a new vb.net project on a user's pc. How can I include the automatic installation of crystal reports runtime file when deploying a project onto a user's pc e.g. run CRRedist2008_x86.msi. I know this can be done but how?
Thanks in advance.
|
|
|
|
|
You either have to include the CrystalReport merge modules in your .MSI or you have to create a setup wrapper (Setup.exe), otherwise called a bootstrapper, to install each .MSI. If you're installing the .NET Framework with your application, the Setup.exe cannot be written in managed code (i.e.: VB.NET or C#).
|
|
|
|
|
|
Hi,
I have a program written in VB 6.0 for sending automated mails using CDO object.
Suddenly it stopped working. I am giving the code below. What could be the possible reason for this program to stop working suddenly.
Public Sub SendOutlookMail(Subject As String, Recipient As String, Sender as String, strHTML As String)
Dim iMsg As New CDO.Message
On Error GoTo ErrHdlr
Const cdoSendUsingPort = 2
' Apply the settings to the message.
With iMsg
.To = Recipient 'Recipient 'Recipient 'ToDo: Enter a valid email address.
.From = Sender
.Subject = Subject
.HTMLBody = strHTML
.Send
End With
' Clean up variables.
Set iMsg = Nothing
Exit Sub
ErrHdlr:
Exit Sub
End Sub Regards,
Uma
modified on Tuesday, June 7, 2011 8:33 AM
|
|
|
|
|
Uma Kameswari wrote: Suddenly it stopped working
Include the error message in your question. BTW format the code using Code block in the question
|
|
|
|
|
No error message. When I execute the program with break points it is not throwing any error. it is executing successfully. but mails are not received.
|
|
|
|
|
I notice that when you catch any error you merely exit from the subroutine. This is extremely bad practice as it means you just eat any exception that occurs rather than using the information provided to diagnose why your code is failing.
The best things in life are not things.
|
|
|
|
|
As I already said I traced the code it is not throwing any exception. The best practice is to write a logfile. I agree with you.
|
|
|
|
|
Check your CDO configuration values as described here[^]. Also in the following line:
Const cdoSendUsingPort = 2
the variable is never referenced in your code, why is it there?
The best things in life are not things.
|
|
|
|
|
this is a code written 8 yrs back by another user. As it was working we did not review it. Now what is the reason for the mails not getting delivered suddenly. till last tuesday it was working fine and suddenly it stopped working.
|
|
|
|
|
Something must have changed, but it is impossible to determine the problem without being able to access your system and run it through the debugger. So, I guess it's up to you.
The best things in life are not things.
|
|
|
|
|
Is it always (mainly) the same message to the same address ?
If your code is not throwing any errors, the most likely reason for the message not arriving is not your code.
You should test the app by adding your own address to the BCC field, and see if you receive the message.
And/or you may want to look into the following things:
1. the recipient's address has changed or has been deleted, and your app is sending the message to the old address.
2. the recipient's email program has interpreted the message as being SPAM, and is now blocking it.
3. the recipient's email operator uses a (new) SPAM blocking service, which has interpreted your messages as SPAM and is now blocking them.
4. the mail server you send messages through has changed (new server ?)
My advice is free, and you may get what you paid for.
|
|
|
|
|
It is not the same message but it is a report in the same format. and to the same address.
I just now tried by including my address in BCC but still I did not receive the mail.
The mail server has changed 2 months before. Even after changing the mail server the program was sending mails properly and suddenly 1 fine day it stopped sending mails. Subject is same to the mail and also the sender address is same. So if suppose it is identified as SPAM by the server how can we resolve this. As the program is not generating any error logically it seems to be a problem at mail server level. How to resolve this?
|
|
|
|
|
The first thing you could try is to manually create a similar message in your regular email client (same recipients including yourself, same subject, same body text, same attachments). See if that message does arrive.
Another thing you could check is the Sender address (the From field). Does this address exist ? If the manual message did arrive, was the sender address the same as the one used by your code ?
My advice is free, and you may get what you paid for.
|
|
|
|
|
Manually I am sending the similar message from my outlook account and the message is arriving.
Sender address exists.
|
|
|
|
|
We are using MS Exchange Server ver 10. Has it got something to do with authentication. If so how to set it using CDOObject?
|
|
|
|
|
One last thing to check: on the last day the message was sent successfully, or on the first day the message was no longer received, were there any Windows, MS Exchange, or MS Office updates installed on the sending server ? If so, you can try uninstalling any or all of these updates.
I am afraid that after that I am running out of ideas and I have no experience with CDO, and all similar code that I have ever written is in VB.NET.
So the only other thing I can think of is to rewrite the app in .Net so you can get better feedback on the reason why the message is not arriving. .Net can give feedback on the Send method, so you can find out what the smtp server is saying about the message.
Good luck,
Johan
My advice is free, and you may get what you paid for.
|
|
|
|
|
Even we thought the same and written a program in .NET which is working fine. Thank you for all you advices.
Regards,
Uma
|
|
|
|
|
I am working on an Access 2007 project that I inherited. I am pulling recordsets using
Dim Command as String
Command = "select storename from stores where storeid = " + CStr(selectedStoreId)
Set rs = CurrentDb.OpenRecordset(Command)
and the I populate the fields on the form using
txtStoreName.Value = rs!StoreName
I have 7 forms, and they're all very simple, and the edit mode on all of them is done this way. The question is, when the user clicks the Edit button, before I enable the fields I want to check to make sure no one else is editing the row.
How do I do this in Access 2007?
Everything makes sense in someone's mind
|
|
|
|
|
Implementing locking is probably the last resort of a bad design.
Think about it. A client locks a row, then loses network connectivity. The row is still locked, and the client that locked the row can't unlock it. Now what do you do? The rest of your clients that still do have connectivity are screwed until that row or table is unlocked.
You may want to read up on all of your options before doing something so drastic. Google for "Access database concurrency".
|
|
|
|
|
Most developers ignore this problem, last in has the power is the general rule. There are so many different scenarios that can be envisaged that to try and deal with them will very quickly have you biting you're own arse.
Make sure it is a real world problem not something thought up by a manager trying to cover all bases. I have often responded to this requirement with 'if we get a race condition then I'll deal with it otherwise let me do something productive'. Then when they insist do an estimate of the cost and performance hit!
Never underestimate the power of human stupidity
RAH
|
|
|
|