|
Sorry its just a program needed for class and I have it almost working but cant find a way around my problem I am running into
|
|
|
|
|
OK, this is the first time I've ever heard of anyone teaching FileGet/FilePut in a VB.NET class. The only time I've ever seen anyone actually using it is in VB6 projects converted to VB.NET.
You don't need the record number in the data since each is going to be at a certain position anyway. When the use enters a record number, it'll go and get that record from the file, even if it's empty. So, there's no need to check the RecordNumber returned by the person object because you already got the record at that position.
The question becomes, did you get anything back from the record? Is person returning Nothing?
Your second problem is in the FilePut call. You're not telling FilePut which position in the file to write the record to.
|
|
|
|
|
hi,
pls anyone try to solve my problem... i need to fetch some thousands of records and insert/export that to excel file using vb.net...
Protected Sub Button1_Click(ByVal sender As Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim cnt As New ADODB.Connection
Dim rst As New ADODB.Recordset
Dim xlApp As Object
Dim xlWb As Object
Dim xlWs As Object
Dim recArray As Object
Dim strDB As String
Dim fldCount As Integer
Dim recCount As Long
Dim iCol As Integer
Dim iRow As Integer
strDB = "UNOGI\UNO;database=Test;uid=sa;pwd=welcome3#" 'here am getting the following error "Could not find installable ISAM."
cnt.Open("Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & strDB & ";")
rst.Open("select top 10000 * from Test.dbo.CustomerDetail", cnt)
xlApp = CreateObject("Excel.Application")
xlWb = xlApp.Workbooks.Add
xlWs = xlWb.Worksheets("Sheet1")
xlApp.Visible = True
xlApp.UserControl = True
fldCount = rst.Fields.Count
For iCol = 1 To fldCount
xlWs.Cells(1, iCol).Value = rst.Fields(iCol - 1).Name
Next
If Val(Mid(xlApp.Version, 1, InStr(1, xlApp.Version, ".") - 1)) > 8 Then
xlWs.Cells(2, 1).CopyFromRecordset(rst)
Else
recArray = rst.GetRows
recCount = UBound(recArray, 2) + 1
For iCol = 0 To fldCount - 1
For iRow = 0 To recCount - 1
If IsDate(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = Format(recArray(iCol, iRow))
ElseIf IsArray(recArray(iCol, iRow)) Then
recArray(iCol, iRow) = "Array Field"
End If
Next iRow
Next iCol
' Transpose and Copy the array to the worksheet,
' starting in cell A2
xlWs.Cells(2, 1).Resize(recCount, fldCount).Value = _
TransposeDim(recArray)
End If
' Auto-fit the column widths and row heights
xlApp.Selection.CurrentRegion.Columns.AutoFit()
xlApp.Selection.CurrentRegion.Rows.AutoFit()
' Close ADO objects
rst.Close()
cnt.Close()
rst = Nothing
cnt = Nothing
' Release Excel references
xlWs = Nothing
xlWb = Nothing
xlApp = Nothing
End Sub
Function TransposeDim(ByVal v As Object) As Object
' Custom Function to Transpose a 0-based array (v)
Dim X As Long, Y As Long, Xupper As Long, Yupper As Long
Dim tempArray As Object
Xupper = UBound(v, 2)
Yupper = UBound(v, 1)
ReDim tempArray(Xupper, Yupper)
For X = 0 To Xupper
For Y = 0 To Yupper
tempArray(X, Y) = v(Y, X)
Next Y
Next X
TransposeDim = tempArray
End Function
in the above code i got some error, if anyone knows any other way pls try to help me resolve as soon as you can... thanks in advance..
|
|
|
|
|
|
do u know any other way to do this bulk insert operation to excel sheet from vb.net
|
|
|
|
|
You've got the only way to do it.
Also, be careful you're not adding so many rows of data to a worksheet that Excel runs out of memory.
You also didn't say what the error message was.
|
|
|
|
|
Try to use Spire.DataExport - it is c# data export component that supports data export into MS Excel,MS Word, HTML, XML, PDF, MS Access, DBF, SQL Script, SYLK, DIF, CSV ,MS Clipboard format.
|
|
|
|
|
I have a aspx application that has some batch sql updates. Need to see status of information that is processed. Is there a equivalent of the Application.DoEvents() in aspx?
|
|
|
|
|
No, for obvious reasons.
If you want to update the web page with the status, you'll have to do it using Ajax or some other page reload. The update would have to be done using a background threaded component.
Ask this question in the ASP.NET forum. What you're asking has nothing to do with VB.NET.
|
|
|
|
|
Hmmm ... You've got a very common problem, especially when you go from a desktop environment to a web environment. I haven't solved this for myself yet, but I think what you can do is create a class, which has an update method that performs your batch update. When you write this method, you will need to execute the update in a separate thread, so that you can return control to your application while the update is running. I think you could then create a event that could be raised when the job is finished.
Or ...
What about creating a SQL server job that performs the update and your web app just invokes the job ? This way the SQL server handles the background execution and doesn't hold up your web page. You could even write to a table (JOB_STATUS)the progress of the job (rows processed) and your web page could check this page periodically for new status.
Check out Microsoft's sp_start_job
http://msdn.microsoft.com/en-us/library/ms186757.aspx[^]
|
|
|
|
|
I have a datagridview and coulmn2 is showing the values like 23.34234, 3.3333 like wise. I tried the following but failure.
I need to format like 23.34 or 23.35
Private Sub MyDataGrid2_CellFormatting(ByVal sender As Object, ByVal e As System.Windows.Forms.DataGridViewCellFormattingEventArgs) Handles MyDataGrid2.CellFormatting
If e.ColumnIndex = 2 And e.RowIndex = 1 Then
'e.Value = String.Format("###,###.00", e.Value)
End If
End Sub
Is there any better ideas for me?
|
|
|
|
|
Well, you're code skips a few things, like checking if e actually has a value to format. You also don't tell the DGV that you applied formatting to the value, and you don't do any error checking in case a non-numeric value is passed in to your column.
Private Sub MyDataGrid2_CellFormatting(ByVal sender As Object, ByVal e As DataGridViewCelLFormattingEventArgs) Handles MyDataGrid2.CellFormatting
' Only apply formatting to a value that exists...
If e.Value IsNot Nothing Then
If e.ColumnIndex = 2 Then
' Format the value to 2 decimal places using culturally-aware format.
e.Value = String.Format("{0:N2}", e.Value)
e.FormattingApplied = True
End If
End If
End Sub
I didn't both with any error trapping in this example. I leave that as an excersize to you.
|
|
|
|
|
Thank You Very....Very....Much To You !
Those remote connections,etc...from .net I learned from you...!
All Your Guidences....Gave Great Knowledge to improve myself.....!
You have to live good, Dave..!
My Best Wishes From
PARAMU
|
|
|
|
|
Dear All,
I do not know asp or c#. i just use visual basic.
now i develop an application in order to send mail with attach file to multiple recipience.
I take some sample code from websites for study as well but it still can not.
my code is:
With Mail
.From = New System.Net.Mail.MailAddress(mFrom.Trim, pDisplayName)
.To.Add(mTo.Trim)
.Priority = pPriority
.IsBodyHtml = pIsBodyHtml
If mCC <> "" Then .CC.Add(mCC.Trim)
If mBCC <> "" Then .Bcc.Add(mBCC.Trim)
.Subject = CStr(mSubject).Trim
.Body = mBody.Trim
.DeliveryNotificationOptions = DeliveryNotificationOptions.OnFailure
End With
Smtp.Host = CStr("mail.company.com")
Smtp.Port = 888
Dim myCredential As New System.Net.NetworkCredential("golden.meas", "gggggggggg")
Smtp.DeliveryMethod = SmtpDeliveryMethod.PickupDirectoryFromIis
Smtp.Credentials = myCredential
Smtp.Send(Mail)
End With
================
After i sent i can not know weather it success or not.
I test to send to my friend mail but can not know weather is success or not and we do not get.
what any sold for this ? And do you have any source code related it ?
Thanks for your help...
Best regards,
VB.Net
|
|
|
|
|
Have a look ! Just I found in MSDN, Answered by Martin, also it will save the mail message as textfile.
Imports System.Net.Mail
Imports System.IO
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mailInstance As MailMessage = New MailMessage("FromMailAdress", "ToMailAdress")
Try
mailInstance.Subject = "This is mail subject"
mailInstance.Body = "This is mail body content"
mailInstance.Attachments.Add(New Attachment("filename")) 'Optional
Dim mailSenderInstance As SmtpClient = New SmtpClient("smtpHostAdress", 25) '25 is the port of the SMTP host
mailSenderInstance.Credentials = New System.Net.NetworkCredential("LoginAccout", "Password")
mailSenderInstance.Send(mailInstance)
mailInstance.Dispose() 'Please remember to dispose this object
Catch ex As Exception
MessageBox.Show(ex.Message)
Dim sw As StreamWriter = New StreamWriter(My.Computer.FileSystem.SpecialDirectories.Desktop & "\myMail.txt")
sw.WriteLine(mailInstance.From)
sw.WriteLine(mailInstance.To)
sw.WriteLine(mailInstance.Subject)
sw.WriteLine(mailInstance.Body)
sw.WriteLine(mailInstance.Attachments)
sw.Close()
End Try
End Sub
|
|
|
|
|
Thanks Paramu,
In that source is send to only one mail right ?
it seems to me that it has no Cc and Bcc.
If I would like to send to multiple recipienceand
,Cc,Bcc and with attach multiple files, what should i do?
On the other hand when i test to send it by this code which copy from you:
Imports System.Net.Mail
Imports System.IO
Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles Button1.Click
Dim mailInstance As MailMessage = New MailMessage("MyEmailAddress", "RecipienceAddress")
Try
mailInstance.Subject = Trim(Me.txtSubject.Text)
mailInstance.Body = Trim(Me.txtBody.Text)
mailInstance.Attachments.Add(New Attachment("D:\11112009204.jpg"))
Dim mailSenderInstance As SmtpClient = New SmtpClient("mail.tmic.com.kh", 587)
mailSenderInstance.Credentials = New System.Net.NetworkCredential("myLongAccount", "MyPassowrd")
mailSenderInstance.Send(mailInstance)
mailInstance.Dispose() 'Please remember to dispose this object
Catch ex As Exception
MessageBox.Show(ex.Message)
Dim sw As StreamWriter = New StreamWriter(My.Computer.FileSystem.SpecialDirectories.Desktop & "\myMail.txt")
sw.WriteLine(mailInstance.From)
sw.WriteLine(mailInstance.To)
sw.WriteLine(mailInstance.Subject)
sw.WriteLine(mailInstance.Body)
sw.WriteLine(mailInstance.Attachments)
sw.Close()
End Try
End Sub
It got message error that "Syntax error in parameters or arguments. The server response was: Authentication failed: malformed response"
what is that problem ?
VB.Net
modified on Tuesday, December 8, 2009 9:44 PM
|
|
|
|
|
Dear All,
I need help regarding , i want to save a csv file into sql 2000 database in a single field as image datatype using VB6.0 , how should i proceed i m not getting it.
Parag
|
|
|
|
|
By using ADO, there's an example on uploading files here[^].
Good luck
I are Troll
|
|
|
|
|
This works only if i want to upload image but when i try to upload csv/excel/pdf/audio file then it gives error at LoadFileFrom command as "file could not be open."
Parag
|
|
|
|
|
Parag Raibagkar wrote: This works only if i want to upload image
Wrong. An image is nothing but a stream of bytes, just like any other file. If you give the LoadFromFile method just the filename, it's assuming that the file is in whatever the CurrentDriectory is. Instead of trying to change the current directory, give the LoadFromFile method the fully qualified path to the file you're trying to upload into the database.
|
|
|
|
|
I have an application using multithreading to read and parse a stream of data from the serial port into packets and extract information out of it to be displayed by the main thread using DirectX interface.
The application is working properly etc, but the thread that reads and parses the com port information is utilising close to 100% cpu usage which is rather annoying me and im not sure what to do about it...a fragment of the code is posted below:
Packets are streamed from the device at 100ms intervals, and the program can't afford to back buffer as the information it is displaying needs to be live, nor can it miss a packet as it needs to check each packet for a particular condition that doesnt get repeated once it occurs...
Public Sub CommReadThread()
Dim bByte As Byte, bPacket(73) As Byte, lResult As Long, tsData As TimeSpan
Try
LinkDev = New SerialPort("COM1", 19200)
LinkDev.Open()
Catch ex As Exception
MsgBox("COM ERROR: " & ex.Message)
Exit Sub
End Try
While bStop = False
tsData = DateTime.Now.Subtract(_iLastData)
CommIdleTime = tsData.TotalMilliseconds
CommBufferSize = LinkDev.BytesToRead
'If no data received for period, flag as disconnected
If CommIdleTime >= _dataTiemout Then
bIsConnected = False
Else
bIsConnected = True
End If
If CommBufferSize > 0 Then
If iFFCount = 2 Then
'found a header, read the rest of the packet
If CommBufferSize >= 70 Then
lResult = LinkDev.Read(bPacket, 0, 70)
_iLastData = DateTime.Now
'Build the packet putting the header back in there for processing
For x As Integer = UBound(bPacket) To 2 Step -1
bPacket(x) = bPacket(x - 2)
Next
bPacket(0) = &HFF
bPacket(1) = &HFF
bPacket(2) = &HFF
LinkPacket = New Packet(bPacket)
'...do packet processing, the New function of the packet class processes it...
LinkPacket = Nothing
iFFCount = 0
End If
Else
'Find a header in the data stream
bByte = LinkDev.ReadByte()
_iLastData = DateTime.Now
If iFFCount > 0 Then
If Hex(bByte) <> "FF" Then
iFFCount = 0
End If
End If
If Hex(bByte) = "FF" Then
iFFCount += 1
End If
End If
End If
End While
End Sub
modified on Monday, December 7, 2009 6:59 AM
|
|
|
|
|
Have you looked at using the DataReceived event? From what I can see of your code here, it looks as if you are just whizzing round in a while loop constantly checking to see if there is anything to read from the port. So you are burning up CPU time doing nothing. The DataReceived event means that you can sit and wait and do nothing until something is ready to read from the port, then you grab it and process it. That might help.
|
|
|
|
|
yeah i was using that before...its just the header of the packet can be anywhere in the stream and the stream is constant thats all...working on extracting the individual packets was proving interesting...hence why i went with this approach...
find the header, wait until the entire packet is in the buffer and read it in, find the next header, wait for the packet...and so on...
|
|
|
|
|
Well, if you have a constant stream then DataReceived probably won't help because there will always be something to read. If you have a constant stream of data to read and parse, I'm not sure what else you can do except throttle back the rate at which you're reading it.
I suppose you could sleep the thread for a few milliseconds before reading from the port if you don't find a header. I don't know the exact requirements for your application, but would it really be that big a deal if there was a 10 millisecond delay before a message header was processed? Actually, even if you specify Sleep(0) immediately before the read it might help because it will yield the thread and give other threads a chance to cut in and do some processing. It's a bit clunky but it would reduce the amount of CPU time the thread is using.
|
|
|
|
|
sorry I'm not reading your code unless you edit it and put it in PRE tags, resulting in proper coloring and indentation.
[ADDED] you should not have polling loops without delays, so when no data is available, waste some time by calling Thread.Sleep(30); or use events. And watch for incomplete packets! [/ADDED]
modified on Monday, December 7, 2009 7:31 AM
|
|
|
|
|