|
Thanks for the reply. I had thought that there must be a way to use remoting like a typical class, define it withevents and then easily pick up events on either side.
After reading some more I decided to use WCF. The duplex part I got working but once again I am struggling with bringing the events (callbacks) into the client form (I have created a reference in the callback class to the client form) but it seems kludgey to me.
VB.Net 2005
|
|
|
|
|
Hello Friends,
I would like to prepare simple crystal report and want to display in vb6 form. Here is the work I have done:
1 Crystal Report Created using Crystal Report 8.5
2 Designed Crystal Report and connect with Oracle 9i
3 Create standard exe project in vb6
4 Added Report which I have created.
5 While running i am getting following error.
Server has not yet been opened.
What is the solution to this, Please help me
Thanks in Advance.
Adarsh Patel
|
|
|
|
|
Using ODBC? Did you create a DSN? Can you connect and execute a select-statement using VB6 on the datasource?
Bastard Programmer from Hell
|
|
|
|
|
When I try to execute/view report same as i have attached it, it works fully...
But when i try to pass parameter / set my own data set it gives me error.
|
|
|
|
|
That's not enough information. What's the difference between "view report" and "view report with parameter/set your own dataset"?
Do you get an exception on any custom query that you execute? Can you try the report with the query "SELECT 1"?
Bastard Programmer from Hell
|
|
|
|
|
Thanks for your reply,
Now my report is working well...
Thanks once again.
Adarsh Patel
|
|
|
|
|
Hi,
Due to issues with VB6 on Windows 2008 I had created a C# EXE that wraps calls to VB6 COM DLL.
This works fine as long as I don't access the SQL database from the C#.
If I have a query from the SQL database in the C#, then in the VB DLL I have an exception when it tries to connect to the database ("Login failed for user...")
The system I am testing this on is windows 2008 32Bit and the SQL is SQL Server 2005.
Any ideas to the causes/how to solve the issue?
thanks.
|
|
|
|
|
Hi everybody,
this might seem very basic, but still I couldn't find a solution - maybe you have it...
Getting an Excel Range obviously results in a 2-dimensional array of object, even if it's only one column. The resulting array is supposed to be used for filtering a database using a LinqToSQL-Query ("...WHERE array.contains(listvalue)". This, unfortunately, seems to mandatorily need a 1-dimensional array.
Does anyone of you know a way out of this dilemma? I couldn't find any way of extracting one dimension into a separate array except iterating through it item by item.
Thank you
Mick
|
|
|
|
|
The only way I know of is iterating through the items, one by one, and creating a second 1-dimensional array.
|
|
|
|
|
Still thank you, Dave, for your answer.
|
|
|
|
|
Hello everyone,
I'm programming a web browser and I don't like it that my web browser actually runs from Internet Explorer instead of my application itself, is it possible for my web browser to have it's own proxy, "internet disconnected" page, I.p., etc. (like Google Chrome, Mozilla Firefox and Opera) I've had heard of Win Sock before, but I do not have extensive knowledge on that subject, but Am willing to learn anything you tell me (including Win Sock).
Simple Thanks and Regards,
Brandon T. H.
Been programming in Visual Basic for 4 years this point forward, and is very good at it (I can even create programs completely on code, without dragging those items from the toolbox). Programming C++ for 1 year so far and the same with C#.
Many of life's failures are people who did not realize how close they were to success when they gave up. - Thomas Edison
|
|
|
|
|
You have to jump through some flamming hoops to get this to work. You can see an example of it here[^].
Basically, the Web Browser control is a managed wrapper for whatever version of IE is install on your machine. Since you're running IE in a window, it'll use all the settings you set in IE, unless you smash the Web Browser control with a large hammer.
|
|
|
|
|
|
|
OK thanks, but also I'm interested does exists some 3rd party program which will allow me to debugging remotely.
greetings
|
|
|
|
|
There is no such product. This is because, when running under the debugger, VB6 code is kind of interpreted, not compiled.
You can remotely debug a VB6 app, you just won't see VB6 source code. You'll see assembler, or in other cases, eqivilent C code, neither of which will resemble your original VB6 code in any way.
|
|
|
|
|
acects wrote: But I can not find anything about remote debugging in Visual Basic 6.0.
That might be due to the fact that most of us abandoned VB6. You'll get more support for Latin.
acects wrote: Is it possible at all?
Stick to OutputDebugString while you're in VB6.
Bastard Programmer from Hell
|
|
|
|
|
I have two reports, done with Crystal Reports, in my project currently. I'm forever having trouble with Crystal Reports and these problems are now causing deployment problems. I'm getting very tired of fighting thru the myriad of problems I've had with Crystal Reports and I want to explore the possibility, desirability of eliminating CR from my project altogether and producing these reports in a diffferent manner.
I would like to know what others have found best.
The reports that I currently have are pretty rudimentary. Just some simple formatting; no graphics, tables, colors, etc.
I know of three other possibilities; 1) using the Report capabilities of VS, 2) automating Word from VS, or 3) writing a text file from VS and then using Word VBA to manipulate it to produce the reports.
Do you know of any others?
Of the options that I've thought of; keeping Crystal Reports, Microsoft Reporting Services, automating Word, and passing a text file to Word; would you consider any of these to be superior to the others? Which way should I go?
I don't know how to do any of these ways. I will have to learn. So, the difficulty, or ease, of the learning process is definitely a consideration.
Any advice or words of wisdom that you might have for me would be greatly appreciated. Thank you.
|
|
|
|
|
I use Reporting Services. It's not much different than Crystal Reports, but I found it far more stable.
Automating Word is about the worst thing you could possibly do to generate a report.
No, scratch that. Writing a text file, then using VBA in Word to create the report in Word is about the worst thing you could do.
|
|
|
|
|
Thank you Dave. You gave me just what I needed and I appreciate it. Another person advised me to use Reporting Services and that is now what I intend to do. I've got some 'book learning' to do but I'm now ready to go. You saved me from going down the wrong road. Thanks. Jack
|
|
|
|
|
I don't know exactly what you're trying to accomplish but I never ever use Crystal Reports. Controlling the printer (in VB 6 at least) is a very simple process.
dim something as stdfont to allow you to change fonts and their characteristics during the run (Don't use the printer font properties for this they don't work well) stdfont is a standard type supplied in VB 6.
Open the printer
set the fonts in the something variable
position the printer cursor using printer.currentx and printer.currenty
Line spacing (kerning) is determined by the font, of course. You can use printer.currenty to override that.
dump the text using printer.print "sometext" If you want all the output on the same line then add a ; (printer.print "sometext";) and you can avoid the printer.currenty statement.
and repeat.
If you're printing a columnar report, add a test to determine end of page (the printer dimensions are twips) I usually leave 1/2" = 720 twips of air @ the bottom to allow for the different unprintable areas
printer.newpage ejects the page
end the job with printer.enddoc
abort using printer.killdoc
If the output exceeds 1 page you'll probably want to have a heading procedure. Printer.page tells you the page number that you can add to your report if you feel like it.
I have used this for over 10 years to print all kinds of reports including form filling.
Murray
|
|
|
|
|
Ben, thank you very much for this. I'm struggling to say the least. I do want to get Crystal Reports out of my life and the way you outline seems like a very real possibility for me. If I understand it correctly it seems so much easier than Crystal Reports or Reporting Services. I'm going to give it a try right away. Would it be possible for you to send me a code snippet? Maybe just a "Hello World" report that said nothing more than that. In the meantime I'm going to try to do it myself. I've got users waiting on me and I'm currently DIW. Dead in the water. I don't need different fonts but I will need to bold some text. Thanks Ben. Jack
|
|
|
|
|
Ben, hold on that request for a code snippet. I found an article and some code. The way I understand it, and will try it later, is to have a form and add to it a PrintDocument control to the form. Then I will have access to statements like the ones you gave to me. I'm looking forward to trying this out. Thanks. jack
|
|
|
|
|
I don't use a PrintDocument control either. Just the printer.
Here's a complete sub we currently use
Public Sub PrintMaintenanceRenewalLetters( _
rsIn As ADodb.Recordset, _
PayDOSCustomersIn() As String, _
DoingReminderIn As Boolean, _
Optional StartFromIn As Integer = 1, _
Optional Recs2Print As Integer = 9999, _
Optional CustNumberIn As String = "-X")
Dim CustNoHold As String
Dim LastLine As Single
Dim iCtr As Integer
Dim StateTablesBought As Integer
Dim CDAdder As Currency
Dim ExtPrice As Currency
Dim ExtFreight As Currency
Dim SalesTax As Currency
Dim QtyBought As Long
Dim BkMark As Variant
' Const FED_PART_NO As String = "87FEDST-03"
' Const FED_DESCRIPTION As String = "Tax Table Service Fed + 1 State"
' Const FED_PRICE As Currency = 45#
' Const OLD_FED_PART_NO As String = "87003-04"
Const FREIGHT_CHARGE As Currency = 3.95
LastLine = Printer.Height - 1440
Dim Ctr As Integer
Ctr = 0
CustNoHold = ""
If StartFromIn > 1 Then
Do
If Trim(rsIn![Customer_Number]) <> CustNoHold Then
CustNoHold = Trim(rsIn!Customer_Number)
Ctr = Ctr + 1
End If
rsIn.MoveNext
Loop Until Ctr = StartFromIn
rsIn.MoveNext
CustNoHold = ""
ElseIf CustNumberIn <> "-X" Then
Do
If Not rsIn.EOF Then
rsIn.MoveNext
If rsIn.EOF Then Exit Do
End If
Loop Until (Trim(rsIn![Customer_Number]) = CustNumberIn) Or rsIn.EOF
If rsIn.EOF Then
MsgBox "Customer Number " & CustNumberIn & " not found!", vbCritical + vbOKOnly, "Error"
Exit Sub
End If
CustNoHold = ""
End If
Do
Do
If Trim(rsIn![Customer_Number]) <> CustNoHold Then
If CustNoHold <> "" Then
' Print the CD adder
Printer.FontBold = True
Printer.ForeColor = vbRed
Printer.Print
Printer.CurrentX = DESCRIPTION_LEFT
Printer.Print "____";
Printer.CurrentX = DESCRIPTION_LEFT + 450
Printer.Print "Please send my services on a CD"
Printer.CurrentX = DESCRIPTION_LEFT + 450
Printer.Print "instead of by e-mail."
Printer.CurrentX = DESCRIPTION_LEFT + 450
Printer.Print "I am adding " & Format(CDAdder, "currency") & " to the Total Price."
Printer.ForeColor = vbBlack
' Print the totals
m_TotalFreight = 0
Printer.CurrentY = m_Line1Y
Printer.CurrentX = RightJustify(Format(m_TotalPrice, "currency"), Printer, 10000)
Printer.Print Format(m_TotalPrice, "currency")
If InStr(CustomerLabel.CityStZip, " AZ ") Then
SalesTax = RoundPerIRS(CCur(m_TotalPrice * SALES_TAX_RATE))
Printer.CurrentY = m_Line2Y
Printer.CurrentX = RightJustify(Format(SalesTax, "currency"), Printer, 10000)
Printer.Print Format(SalesTax, "currency")
End If
' Printer.CurrentY = m_Line3Y
' Printer.CurrentX = RightJustify(Format(m_TotalFreight, "currency"), Printer, 10000)
' Printer.Print Format(m_TotalFreight, "currency")
'
Printer.CurrentY = m_Line4Y
Printer.CurrentX = RightJustify(Format(m_TotalPrice + SalesTax + m_TotalFreight, "currency"), Printer, 10000)
Printer.Print Format(m_TotalPrice + SalesTax + m_TotalFreight, "currency")
Printer.FontBold = False
If CustNoHold = CustNumberIn Then
Printer.EndDoc
rsIn.Close
Exit Sub
Else
Printer.NewPage
End If
End If
If LoadCustomerLabel(rsIn!Customer_Number) Then
m_TotalPrice = 0
CDAdder = 0
SalesTax = 0
m_TotalFreight = 0
StateTablesBought = 0
' Print either the IS or PAYROLL order
If DoingReminderIn Then
PrintRenewalReminderOrderForm
Else
PrintRenewalOrderForm
End If
m_Line5Y = 10100
CustNoHold = Trim(rsIn!Customer_Number)
Printer.FontSize = 9
Printer.Font = "Arial"
Printer.CurrentX = LETTER_LEFT_MARGIN
Printer.CurrentY = 5.525 * 1440
Printer.Print CustomerLabel.Name
Printer.CurrentX = LETTER_LEFT_MARGIN
Printer.Print CustomerLabel.Company
Printer.CurrentX = LETTER_LEFT_MARGIN
Printer.Print CustomerLabel.Address; " "; CustomerLabel.Suite
Printer.CurrentX = LETTER_LEFT_MARGIN
Printer.Print CustomerLabel.CityStZip
Printer.CurrentX = LETTER_LEFT_MARGIN
Printer.Print CustomerLabel.Phone
Printer.ForeColor = vbRed
Printer.FontSize = 10
Printer.Font = "Arial"
Printer.CurrentX = LETTER_LEFT_MARGIN
If InStr(CustomerLabel.eMail, ";") Then
Printer.Print Left(CustomerLabel.eMail, InStr(CustomerLabel.eMail, ";") - 1)
Else
Printer.Print CustomerLabel.eMail
End If
Printer.ForeColor = vbBlack
Printer.CurrentY = m_Line5Y
End If
End If
Printer.FontSize = 8
Printer.CurrentX = QTY_LEFT
QtyBought = CLng(rsIn![Qty])
If IsNull(rsIn![Description]) Then
GoTo BadRecord
' MsgBox "Bad record. Item Number " & rsIn!Item_Number & " has no description. Aborting", vbCritical + vbOKOnly
' Printer.EndDoc
' rsIn.Close
' Exit Sub
Else
Printer.Print QtyBought;
Printer.CurrentX = ITEM_NUMBER_LEFT
Printer.Print rsIn!Item_Number;
Printer.CurrentX = DESCRIPTION_LEFT
If Printer.TextWidth(Trim(rsIn![Description])) > 3600 Then
Printer.Print Left(rsIn![Description], 40) & ". . .";
Else
Printer.Print rsIn![Description];
End If
Printer.CurrentX = RightJustify(Format(rsIn![Retail], "currency"), Printer, m_lRgtOfList)
Printer.Print Format(rsIn![Retail], "currency");
ExtPrice = QtyBought * rsIn![Retail]
CDAdder = CDAdder + (QtyBought * CD_FEE)
' ExtFreight = QtyBought * FREIGHT_CHARGE
Printer.CurrentX = RightJustify(Format(ExtPrice, "currency"), Printer, m_lRgtOfDiscount)
Printer.Print Format(ExtPrice, "currency");
' Printer.CurrentX = RightJustify(Format(ExtFreight, "currency"), Printer, m_lRgtOfNet)
Printer.Print 'Format(ExtFreight, "currency")
m_TotalPrice = m_TotalPrice + ExtPrice
' m_TotalFreight = m_TotalFreight + ExtFreight
End If
BadRecord:
rsIn.MoveNext
Loop Until (Printer.CurrentY >= LastLine) Or rsIn.EOF Or g_lTotalRecordsPrinted = Recs2Print
If Not rsIn.EOF Then
Printer.NewPage
Else
m_TotalFreight = 0
' Print the totals
Printer.CurrentY = LastLine - 720
Printer.CurrentX = DESCRIPTION_LEFT
Printer.Print "____";
Printer.CurrentX = DESCRIPTION_LEFT + 450
Printer.Print "Please send my services on a CD instead of by e-mail."
Printer.CurrentX = DESCRIPTION_LEFT + 450
Printer.Print "I am adding " & Format(CDAdder, "currency") & " to the Total Price."
Printer.FontBold = True
Printer.CurrentY = m_Line1Y
Printer.CurrentX = RightJustify(Format(m_TotalPrice, "currency"), Printer, 10000)
Printer.Print Format(m_TotalPrice, "currency")
If InStr(CustomerLabel.CityStZip, " AZ ") Then
SalesTax = RoundPerIRS(CCur(m_TotalPrice * SALES_TAX_RATE))
Printer.CurrentY = m_Line2Y
Printer.CurrentX = RightJustify(Format(SalesTax, "currency"), Printer, 10000)
Printer.Print Format(SalesTax, "currency")
End If
' Printer.CurrentY = m_Line3Y
' Printer.CurrentX = RightJustify(Format(m_TotalFreight, "currency"), Printer, 10000)
' Printer.Print Format(m_TotalFreight, "currency")
Printer.CurrentY = m_Line4Y
Printer.CurrentX = RightJustify(Format(m_TotalPrice + SalesTax + m_TotalFreight, "currency"), Printer, 10000)
Printer.Print Format(m_TotalPrice + SalesTax + m_TotalFreight, "currency")
Printer.FontBold = False
End If
DoEvents
Loop Until rsIn.EOF Or (g_lTotalRecordsPrinted >= Recs2Print)
Printer.EndDoc
rsIn.Close
Note it doesn't use stdfont because I didn't need to change the fonts. In those cases, the printer properties work well.
Murray (not Ben)
|
|
|
|
|
I'm sorry about that Ben thing.
Murray, thanks much for this. I'm getting ready to try it in a few minutes. I have a feeling that VS 2010 does not like the printer. commands. I tried that before and got an error message. I think I may have to add the printDocument control. But I'll find out in just a few minutes. I'm going to take a form, add a button, and put your code into the button's click event. I'll comment out lines of code concering the recordset. If that doesn't work I may try the code in a subroutine inside of a module that I call. Anyway, I'm going to mess around with it and I'll let you know of progress, or lack thereof. Thank you Murray. Jack
|
|
|
|
|