|
Probably best to have posted this in the appropriate forum.
|
|
|
|
|
Hi,
I want to disable users mailbox account from exchange server 2007 using vb.net
I have tried to add CDOEXM.dll but its not added..
thanks in advance
|
|
|
|
|
CDOEXM is not available for exchange 2007. It's now a separate download .[^]
Note that support for cdo is being phased out starting this month.
You should also grab hold of a copy of the exchange admin tools (probably for 32 bit) for exchange 2007, and install them on the system where the programs will be running... Your pc should be part of the same active directory domain as your exchange server.
I strongly suggest you use the new powershell interface for doing your stuff, as this will not work anymore on exchange 2010...
|
|
|
|
|
Hi All,
I have 600 rows entries in a SQL database column "Name".
At present I am looping through each row and searching for a text which should match the entries in "Name" column.
My code is like this:
For Each dr As DataRow In myDataSet.Tables(0).Rows
If Trim(dr(("Name"))) = Trim(search_text) Then
' matching found...
End If
Next
above, myDataSet contains the "Name" column data.
Now, the above code is very time consuming, because it has to loop entire 600 times...
What I am looking is any simple method, by which it direct jumps into the matched row and read the entries.
Can someone suggest me how to do this?
Regards,
R.S
|
|
|
|
|
|
Ever heard of the SQL 'LIKE' clause ?
|
|
|
|
|
The DataTable object has a .Select in which you can specify what would a WHERE portion of SQL and it will return an array of DataRows. This way you can pull a lot of data from a database just once, then filter it different ways quickly when you get it back. For your code above it would work something like this:
For Each row As DataRow In myDataSet.Tables(0).Select("Name='" & search_text & "'")
Next
|
|
|
|
|
Need some advice on which would be better!
1. creating a function that take a list(of sqlparameters)
<br />
Dim ParamList As New List(Of SqlParameter)<br />
<br />
Dim param As New SqlParameter("@SectionNo", SqlDbType.Int)<br />
param.Value = SectionNo<br />
<br />
ParamList.Add(param)<br />
or
2. Creating a data dictionary storing parameter name, type and value and then building up a sqlparametercollection e.g.
<br />
dim pc as sqlparametercollection<br />
pc = da.selectcommand.parameters<br />
for each entry in the datadictionary<br />
pc.add(paramName, Type, value)<br />
next<br />
reason for asking i need to created a stored proc that could have upto 100 parameters and am looking for speed and re-useability.
Many Thanks for your help and hope it makes sense
Simon
|
|
|
|
|
Simon_Whale wrote: i need to created a stored proc that could have upto 100 parameters
|
|
|
|
|
|
the information is for an insurance underwriting system. I've tried to argue the case with the lead developer that we should split the data up in the logic layer and insert into the database in smaller chunks, but it failed.
So im trying to make sure that the data layer works the most efficient and reliable way possible and then argue about the way data is handled later down the road.
|
|
|
|
|
The lead developer should then be fired for incompetence. Not processing in smaller chunks so that the code is more maintainable is just ludicrous.
Simon_Whale wrote: argue about the way data is handled later down the road.
Why? So you have to redevelop the data layer at a later time? Trust me. It's never going to happen.
|
|
|
|
|
Simon_Whale wrote: a stored proc that could have upto 100 parameters
maybe store your parameters in the database then?
|
|
|
|
|
When I click a button in my program some text pops up in a label. Is there a way to automatically clear/erase the text 5 seconds after clicking the button?
|
|
|
|
|
Use a Timer control. Start the timer in the click event of the Button and in the Tick event of the Timer, clear the content of the TextBox and stop the timer.
Steve Jowett
-------------------------
Real programmers don't comment their code. If it was hard to write, it should be hard to read.
|
|
|
|
|
Alright thank you Im new to this so I didnt even know about that.
|
|
|
|
|
That is why we are here, I still ask.
Always nice to Vote Up a helpful response though
------------------------------------
I will never again mention that I was the poster of the One Millionth Lounge Post, nor that it was complete drivel. Dalek Dave
|
|
|
|
|
A ToolTip didn't work for what you wanted?
|
|
|
|
|
Experts,
Initally what i want to do is to sort 2 lots of data. 1 sort would be the highscore (the highest of the score, ad the second dort would be through the time (lowest).
I dont't really know what the best way to do this, so that was why i thought i would ask you lot. I also will post up the code i am having a bit of trouble with. This may be able to cope with what i am wanting to do.
I am using 1 button called comtest
2 list boxes called listBox1 and ListBox2
2 textboxes called text1 and text2
Imports System.IO
Public Class Form1
Dim scores = New System.Collections.Generic.List(Of String)
Dim names = New System.Collections.Generic.List(Of String)
Dim test1(0 To 10) As String
Dim test2(0 To 10) As Integer
Dim userscore As Integer
Dim username As String
Dim a As Integer
Dim b As Integer
Dim i As Integer
Dim strFilename As String = ("High Scores.txt")
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles MyBase.Load
Call highscore()
names = New System.Collections.Generic.List(Of String)
scores = New System.Collections.Generic.List(Of Integer)
Dim srScores As New IO.StreamReader(strFilename)
While Not srScores.EndOfStream
Dim strRead As String = srScores.ReadLine
ListBox1.Items.Add(strRead)
Dim strSplit() As String = Split(strRead, ",")
names.Add(strSplit(0))
scores.Add(strSplit(1))
End While
srScores.Close()
End Sub
Private Sub comtest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comtest.Click
username = Text1.Text
userscore = Val(Text2.Text)
For i = 1 To 10
a = scores(i)
If userscore >= a Then
test1(i) = username
test2(i) = userscore
For b = i + 1 To 10
test1(b) = names(b - 1)
test2(b) = scores(b - 1)
Next
Call newscore()
Exit Sub
End If
test1(i) = names(i)
test2(i) = scores(i)
Next
End Sub
Private Sub highscore()
For i = 1 To 10
ListBox1.Items.Add(names(i)) 'this always comes up with an error saying argument out of range
List2.Items.Add(scores(i))
Next
End Sub
Private Sub newscore() ' write
ListBox1.ClearSelected()
List2.ClearSelected()
For i = 1 To 10
ListBox1.Items.Add(test1(i))
List2.Items.Add(test2(i))
names(i) = test1(i)
scores(i) = test2(i)
Next
Dim objWriter As New System.IO.StreamWriter(highScoresFile)
For i = 1 To 10
objWriter.Write(names(i) & "," & scores(i))
Next
objWriter.Close()
End Sub
If anybody can help that would be great
Many thanks
Dan
|
|
|
|
|
There are several problems in your program
- you defined names = New System.Collections.Generic.List(Of String) in the declarations section and later on in Form_Load you have scores = New System.Collections.Generic.List(Of Integer) . Is the list of type Integer or String?
- you are trying to load the listboxes with names/scores before you read them from the textfile. so move the line Call highscore to the bottom in Form1_Load
- in Sub highscore you are loading the listboxes from the names/scores lists. The entries in the list are indexed from 0 to Count-1. So change the first line to For i = 0 To 9
there are probably several more problems but this should get you started.
Tosch
|
|
|
|
|
Thanks a million Tosch. It is really annoying when you spot stupid mistakes like that.
I am still getting an error on under the sub heading highscores on listBox1.Items.Add(names(i))
The error is ArgumentOutOfRangeException was unhandled?
AND the index was out of range. must be non-negative and less than the size of the collection.
Parameter name:index
Any ideas
Cheers
Dan
modified on Wednesday, April 14, 2010 9:57 AM
|
|
|
|
|
Change the For... to the For i = 0 to names.count - 1 .
Do you have exactly 10 names/scores in your textfile? Otherwise you try to display 10 entries in the names list even if there are less entries.
Tosch
|
|
|
|
|
WOOOOOO it actually seems to work.
Quick question though I tried to trick the code to see if the sort is actually working and it doesn't appear to sort the highscores into numerical order.
All i actually done was just move the highest score to the bottom of the text file, so only one of them was out of sync.
There also seems to be an error on button click, which i think is part of the sorting.
Private Sub comtest_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles comtest.Click
username = Text1.Text
userscore = Val(Text2.Text)
For i = 1 To 10
a = scores(i)
If userscore >= a Then
test1(i) = username
test2(i) = userscore
For b = i + 1 To 10
test1(b) = names(b - 1) ' comes up with an error saying ArgumentOutOfRage index was out of range, must be non-negative
test2(b) = scores(b - 1)
Next
Call newscore()
Exit Sub
End If
test1(i) = names(i)
test2(i) = scores(i)
Next
End Sub
Any ideas
Many thanks for all the help
Cheers
Dan
modified on Wednesday, April 14, 2010 10:46 AM
|
|
|
|
|
Sorting in the listbox won't work because it sorts the entries as strings and not in numerical order. So it sorts like 10,100,11 and so on.
This is a bit tricky to solve. You could padd left the scores with 0. The scores would then be 010,100,011 which would sort correctly. Try to google for a solution to this. There are a number of options you have.
Same problem in your code with the amount of entries in names list? Try ...To names/scores.count-1 instead of ..To 10
Tosch
|
|
|
|
|
1) Gotta get used to zero-indexed arrays/lists... In programming, everything starts at zero (Once you get beyond VB6)...
An array or list with 10 elements actually goes from 0 to 9. There's no element #10 (That would be the 11th element). If you count from 1 to 10, you skip the first element (0) and go past the last element (9).
2) When you're using the .NET framework, try not to reinvent the wheel. You shouldn't have to write your own sorting routine in most cases, because the framework already has those kinds of things built-in.
3) Try to think in terms of objects, not simple arrays. You're working with these things as arrays of strings and integers, when you're really dealing with high scores, each of which has a name and a value. You need to put them together so you can work with them more easily... That requires a class or structure...
Public Class HighScore
Dim Name As String
Dim Score As Integer
End Class
4) Once you put them together like this, it's a lot easier to shuffle them around as needed. If you have a List(Of HighScore) , you can even automate the sorting by just calling the Sort() function. The only trick there is that you have to tell it how a HighScore should be sorted:
Public Class HighScore
Implements System.IComparable(Of HighScore)
Dim Name As String
Dim Score As Integer
Public Function CompareTo(ByVal other As HighScore) As Integer
CompareTo = -Score.CompareTo(other.Score)
End Function
End Class
Now a HighScore object knows that it should be sorted by score. Since we negate the result in the CompareTo function, it puts it in descending order instead of ascending order. When you tell the list to Sort(), it'll know what to do.
5) But then, you want to ALWAYS have it sorted, right? Well, the framework can do that too... Instead of a List(Of HighScore) , try using a SortedList(Of HighScore) . Then you don't have to do any work at all... When you add the new score in, it'll automatically jump to the right spot.
6) As for displaying them... Well, ListBoxes are pretty smart too... Now it's been a while since I've worked with WinForms (WPF is the new way to do things), but if I remember right, ListBoxes have a "DisplayMember" property. In this case, you can just set the DisplayMember of the two lists to "Name" and "Score" respectively, and then just add the HighScore objects to them. If the DisplayMember is "Name", the control will look for a "Name" property on the object you add, and display just that property.
Anyway, that should get you pointed in the right direction.
|
|
|
|