Welcome Guest!
 VB Helper
 Previous Message All Messages Next Message 
VB Helper Newsletter  Rod Stephens
 Dec 04, 2005 18:44 PST 

I *FINALLY* received my author copies of "Visual Basic 2005 Programmer's
Reference" (http://www.vb-helper.com/vb_prog_ref.htm) and it looks
great! Sometimes the screen shots in a book don't print well and get
funny aliasing effects. Not this time. The production people that put a
book together did a great job and all the pictures look perfect (except
of course not in color).

Have a great week and thanks for subscribing!

Rod
RodSte-@vb-helper.com
==========

    VB6 Contents:
1. New HowTo: Use a SELECT INTO statement in ADO to copy data from one
table into two new tables
2. New HowTo: Use a INSERT INTO statement in ADO to copy data from one
table into two existing tables

    VB.NET Contents:
3. Updated HowTo: Compare the speeds of Trim$(s) and s.Trim() in VB .NET
4. New HowTo: Use an ImageAttributes object to swap the red, green, and
blue components of an image in Visual Basic .NET
5. New HowTo: Use an ImageAttributes object to display an image's red,
green, and blue components in Visual Basic .NET
6. New HowTo: Use an ImageAttributes object to adjust an image's
brightness in Visual Basic .NET
7. New HowTo: Use an ImageAttributes object to gamma correct an image in
Visual Basic .NET

    Both Contents:
8. Trouble with VB 2005 Express (Continued)
9. New HowTo: Write a DLL in Visual Basic .NET that saves images in
different formats (GIF, JPG, etc.) and call it from Visual Basic 6
10. Karen Watterson's Weekly Destinations and Diversions (D & D)
==========
++++++++++
   <VB6>
++++++++++
==========
1. New HowTo: Use a SELECT INTO statement in ADO to copy data from one
table into two new tables
http://www.vb-helper.com/howto_ado_select_into.html
http://www.vb-helper.com/HowTo/howto_ado_select_into.zip

This example splits a database table into two new tables to normalize
the data. The Combined table has the fields ID, FirstName, LastName,
StartTime, StopTime, and Rate. The program splits this into a People
table with fields ID, FirstName, LastName, and Rate; and an Invoices
table with fields ID, StartTime, and StopTime.

When you click the Split Table button, the program uses the following
code to split the table. It executes SELECT INTO statements to copy data
from the original table into the new tables. Note that the new tables
must not exist for SELECT INTO to work. If you want to append data to an
existing table, use INSERT INTO instead.

Private Sub cmdSplitTable_Click()
Dim conn As ADODB.Connection

    ' Open a connection.
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & m_DbName & ";" & _
        "Persist Security Info=False"
    conn.Open

    ' Copy the data from the combined table into the new tables.
    conn.Execute _
        "SELECT DISTINCT ID, FirstName, LastName, Rate " & _
        "INTO People FROM Combined"
    conn.Execute _
        "SELECT ID, StartTime, StopTime " & _
        "INTO Invoices FROM Combined"

    ' Display the new data.
    txtData.Text = DBContents(conn)
    conn.Close
End Sub

The program uses the following functions to display the database's
contents. Function DBContents opens the database's schema to get a list
of its tables. Then for each table it calls function TableContents.

Function TableContents selects all of the records from a table and loops
through them, adding each to its result string.

' Return a string containing the database's contents.
Private Function DBContents(ByVal conn As ADODB.Connection) As String
Dim rs As ADODB.Recordset
Dim txt As String

    ' Get table information.
    Set rs = conn.OpenSchema(adSchemaTables, _
        Array(Empty, Empty, Empty, "Table"))
    txt = ""
    Do While Not rs.EOF
        ' Get this table's contents.
        txt = txt & TableContents(conn, rs!table_name)
        rs.MoveNext
    Loop
    rs.Close

    DBContents = txt
End Function

' Return a string containing this table's contents.
Private Function TableContents(ByVal conn As ADODB.Connection, ByVal
table_name As String) As String
Dim rs As ADODB.Recordset
Dim txt As String
Dim record_txt As String
Dim i As Integer

    Set rs = conn.Execute( _
        "SELECT * FROM " & table_name, , adCmdText)
    txt = "********************" & vbCrLf & table_name & vbCrLf
    Do Until rs.EOF
        record_txt = rs.Fields(0).Value
        For i = 1 To rs.Fields.Count - 1
            record_txt = record_txt & ", " & rs.Fields(i).Value
        Next i
        txt = txt & record_txt & vbCrLf

        rs.MoveNext
    Loop
    rs.Close

    TableContents = txt
End Function
==========
2. New HowTo: Use a INSERT INTO statement in ADO to copy data from one
table into two existing tables
http://www.vb-helper.com/howto_ado_insert_into.html
http://www.vb-helper.com/HowTo/howto_ado_insert_into.zip

This example copies data from one table into two existing tables to
normalize the data. The Combined table has the fields ID, FirstName,
LastName, StartTime, StopTime, and Rate. The program splits this into a
People table with fields ID, FirstName, LastName, and Rate; and an
Invoices table with fields ID, StartTime, and StopTime.

When you click the Split Table button, the program uses the following
code to split the table. It executes INSERT INTO statements to copy data
from the original table into the existing tables. The embedded SELECT
statement picks the data to be inserted.

Private Sub cmdSplitTable_Click()
Dim conn As ADODB.Connection

    ' Open a connection.
    Set conn = New ADODB.Connection
    conn.ConnectionString = _
        "Provider=Microsoft.Jet.OLEDB.4.0;" & _
        "Data Source=" & m_DbName & ";" & _
        "Persist Security Info=False"
    conn.Open

    ' Copy the data from the combined table into the new tables.
    conn.Execute _
        "INSERT INTO People " & _
        "SELECT DISTINCT ID, FirstName, LastName, Rate " & _
        "FROM Combined"
    conn.Execute _
        "INSERT INTO Invoices " & _
        "SELECT ID, StartTime, StopTime " & _
        "FROM Combined"

    ' Display the new data.
    txtData.Text = DBContents(conn)
    conn.Close
End Sub

The program uses the following functions to display the database's
contents. Function DBContents opens the database's schema to get a list
of its tables. Then for each table it calls function TableContents.

Function TableContents selects all of the records from a table and loops
through them, adding each to its result string.

' Return a string containing the database's contents.
Private Function DBContents(ByVal conn As ADODB.Connection) As String
Dim rs As ADODB.Recordset
Dim txt As String

    ' Get table information.
    Set rs = conn.OpenSchema(adSchemaTables, _
        Array(Empty, Empty, Empty, "Table"))
    txt = ""
    Do While Not rs.EOF
        ' Get this table's contents.
        txt = txt & TableContents(conn, rs!table_name)
        rs.MoveNext
    Loop
    rs.Close

    DBContents = txt
End Function

' Return a string containing this table's contents.
Private Function TableContents(ByVal conn As ADODB.Connection, ByVal
table_name As String) As String
Dim rs As ADODB.Recordset
Dim txt As String
Dim record_txt As String
Dim i As Integer

    Set rs = conn.Execute( _
        "SELECT * FROM " & table_name, , adCmdText)
    txt = "********************" & vbCrLf & table_name & vbCrLf
    Do Until rs.EOF
        record_txt = rs.Fields(0).Value
        For i = 1 To rs.Fields.Count - 1
            record_txt = record_txt & ", " & rs.Fields(i).Value
        Next i
        txt = txt & record_txt & vbCrLf

        rs.MoveNext
    Loop
    rs.Close

    TableContents = txt
End Function
==========
++++++++++
<VB.NET>
++++++++++
==========
3. Updated HowTo: Compare the speeds of Trim$(s) and s.Trim() in VB .NET
http://www.vb-helper.com/howto_net_time_trim.html
http://www.vb-helper.com/HowTo/howto_net_time_trim.zip

This example compares the speeds of the Trim$ function and using a
string's Trim method.

start_time = Now
For i As Integer = 1 To num_trials
    s2 = Trim$(s1)
Next i
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
lblTrimS.Text = _
    elapsed_time.TotalSeconds.ToString("0.000000")
lblTrimS.Refresh()

start_time = Now
For i As Integer = 1 To num_trials
    s2 = s1.Trim()
Next i
stop_time = Now
elapsed_time = stop_time.Subtract(start_time)
lblSTrim.Text = _
    elapsed_time.TotalSeconds.ToString("0.000000")
lblSTrim.Refresh()

In these tests, the Trim$ function was about 50 percent faster. Note,
however, that a string's Trim method has more flexibility because it can
take an array of characters to trim.

Michael Freidgeim also notes that Trim removes only spaces while
String.Trim() removes all whitespace characters (tab, carriage return,
line feed, etc.) by default. Visit his blog
(http://geekswithblogs.net/mnf/archive/2005/11/11/59748.aspx)!
==========
4. New HowTo: Use an ImageAttributes object to swap the red, green, and
blue components of an image in Visual Basic .NET
http://www.vb-helper.com/howto_net_swap_rgb.html
http://www.vb-helper.com/HowTo/howto_net_swap_rgb.zip

When transforming colors, Visual Basic .NET represents a color using a
vector with 5 entries: red, green, blue, alhpa (opacity), and a scaling
value that is 1. A ColorMatrix can transform an image's colors by
multiplying each pixel's color vector by a 5-by-5 matrix. An identity
matrix, with 1's down the diagonal, leaves all colors unchanged.

The following code uses ColorMatrixes to make three versions of an image
with its color components swapped. (To see how this works, multiply the
first matrix by the vector (r, g, b, a, 1) and notice that the result is
(g, r, b, a, 1) and the red and green components have swapped.)

For each image, the program makes an ImageAttributes object and gives it
an appropriate ColorMatrix. It then uses a Graphics object's DrawImage
method to copy the original image, passing the ImageAttributes object in
to make the color transformation.

The result is probably not terribly useful but it is interesting. The
output images almost look colorized.

' Display the red, green, and blue component images.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
    Dim image_attr As New ImageAttributes
    Dim cm As ColorMatrix
    Dim rect As Rectangle =
Rectangle.Round(picSource.Image.GetBounds(GraphicsUnit.Pixel))
    Dim wid As Integer = picSource.Image.Width
    Dim hgt As Integer = picSource.Image.Height
    Dim bm As Bitmap
    Dim gr As Graphics
    Dim theta As Single

    ' Swap red/green.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    theta = PI / 6
    cm = New ColorMatrix(New Single()() { _
        New Single() {0.0, 1.0, 0.0, 0.0, 0.0}, _
        New Single() {1.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 1.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picRG.Image = bm

    ' Swap green/blue.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    theta = PI / 3
    cm = New ColorMatrix(New Single()() { _
        New Single() {1.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 1.0, 0.0, 0.0}, _
        New Single() {0.0, 1.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picGB.Image = bm

    ' Swap blue/red.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    theta = PI / 2
    cm = New ColorMatrix(New Single()() { _
        New Single() {0.0, 0.0, 1.0, 0.0, 0.0}, _
        New Single() {0.0, 1.0, 0.0, 0.0, 0.0}, _
        New Single() {1.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picBR.Image = bm
End Sub
==========
5. New HowTo: Use an ImageAttributes object to display an image's red,
green, and blue components in Visual Basic .NET
http://www.vb-helper.com/howto_net_separate_rgb.html
http://www.vb-helper.com/HowTo/howto_net_separate_rgb.zip

When transforming colors, Visual Basic .NET represents a color using a
vector with 5 entries: red, green, blue, alhpa (opacity), and a scaling
value that is 1. A ColorMatrix can transform an image's colors by
multiplying each pixel's color vector by a 5-by-5 matrix. An identity
matrix, with 1's down the diagonal, leaves all colors unchanged.

The following code uses ColorMatrixes to make three versions of an image
containing only its red, green, and blue components. (To see how this
works, multiply the first matrix by the vector (r, g, b, a, 1) and
notice that the result is (r, 0, 0, a, 1) and the green and blue
components have been removed.)

For each image, the program makes an ImageAttributes object and gives it
an appropriate ColorMatrix. It then uses a Graphics object's DrawImage
method to copy the original image, passing the ImageAttributes object in
to make the color transformation. The result is images showing the
original's red, green, and blue components.

' Display the red, green, and blue component images.
Private Sub Form1_Load(ByVal sender As System.Object, ByVal e As
System.EventArgs) Handles MyBase.Load
    Dim image_attr As New ImageAttributes
    Dim cm As ColorMatrix
    Dim rect As Rectangle =
Rectangle.Round(picSource.Image.GetBounds(GraphicsUnit.Pixel))
    Dim wid As Integer = picSource.Image.Width
    Dim hgt As Integer = picSource.Image.Height
    Dim bm As Bitmap
    Dim gr As Graphics

    ' Red.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    cm = New ColorMatrix(New Single()() { _
        New Single() {1.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picR.Image = bm

    ' Green.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    cm = New ColorMatrix(New Single()() { _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 1.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picG.Image = bm

    ' Blue.
    bm = New Bitmap(wid, hgt)
    gr = Graphics.FromImage(bm)
    cm = New ColorMatrix(New Single()() { _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 1.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    image_attr.SetColorMatrix(cm)
    gr.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
    picB.Image = bm
End Sub
==========
6. New HowTo: Use an ImageAttributes object to adjust an image's
brightness in Visual Basic .NET
http://www.vb-helper.com/howto_net_adjust_cm_brightness.html
http://www.vb-helper.com/HowTo/howto_net_adjust_cm_brightness.zip

When transforming colors, Visual Basic .NET represents a color using a
vector with 5 entries: red, green, blue, alhpa (opacity), and a scaling
value that is 1. A ColorMatrix can transform an image's colors by
multiplying each pixel's color vector by a 5-by-5 matrix. An identity
matrix, with 1's down the diagonal, leaves all colors unchanged.

The following code uses a ColorMatrix to adjust the brightness of an
image's pixels. (To see how this works, multiply the first matrix by the
vector (r, g, b, a, 1) and notice that the result is (brt * r, brt * g,
brt * b, a, 1) so the red, green, and blue values have been scaled by a
factor of brt.)

When you change the program's scroll bar or enter a new value in the
TextBox, the program uses this routine to adjust the image's brightness
accordingly.

Private Sub picResult_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles picResult.Paint
    Dim brt As Single = hbarBrightness.Value / 100
    Dim image_attr As New ImageAttributes
    Dim cm As ColorMatrix = New ColorMatrix(New Single()() { _
        New Single() {brt, 0.0, 0.0, 0.0, 0.0}, _
        New Single() {0.0, brt, 0.0, 0.0, 0.0}, _
        New Single() {0.0, 0.0, brt, 0.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 1.0, 0.0}, _
        New Single() {0.0, 0.0, 0.0, 0.0, 1.0}})
    Debug.WriteLine(brt)
    Dim rect As Rectangle =
Rectangle.Round(picSource.Image.GetBounds(GraphicsUnit.Pixel))
    Dim wid As Integer = picSource.Image.Width
    Dim hgt As Integer = picSource.Image.Height

    image_attr.SetColorMatrix(cm)
    e.Graphics.DrawImage(picSource.Image, rect, 0, 0, wid, hgt,
GraphicsUnit.Pixel, image_attr)
End Sub

This method is extremely fast so you can easily adjust brightness in
real time.
==========
7. New HowTo: Use an ImageAttributes object to gamma correct an image in
Visual Basic .NET
http://www.vb-helper.com/howto_net_adjust_gamma.html
http://www.vb-helper.com/HowTo/howto_net_adjust_gamma.zip

Gamma correction is a process of adjusting an image's brightness and
color balance to produce an accurate and pleasing result on the screen.
<A HREF="http://www.cgsd.com/papers/gamma.html">Look here</A> for more
details.

The ImageAttributes object can perform gamma correction. The following
code makes an ImageAttributes object and uses its SetGamma method to set
a gamma value. It then uses a Graphics object's DrawImage method to draw
the original image, passing it the ImageAttributes object to set the
image's gamma value.

When you change the program's scroll bar or enter a new value in the
TextBox, the program uses this routine to adjust the image's gamma
accordingly. The result is quite impressive. The original image is as I
scanned it from a photograph. Setting gamma to 0.4 makes the image much
brighter and sharper.

Private Sub picResult_Paint(ByVal sender As Object, ByVal e As
System.Windows.Forms.PaintEventArgs) Handles picResult.Paint
    Dim pts() As Point = { _
        New Point(0, 0), _
        New Point(picSource.Image.Width - 1, 0), _
        New Point(0, picSource.Image.Height - 1) _
    }
    Dim rect As New Rectangle(0, 0, picSource.Image.Width,
picSource.Image.Height)
    Dim image_attr As New ImageAttributes
    Dim gamma As Single = hbarGamma.Value / 10
    image_attr.SetGamma(gamma)
    e.Graphics.DrawImage(picSource.Image, pts, rect, GraphicsUnit.Pixel,
image_attr)
End Sub

This method is extremely fast so you can easily adjust gamma in real
time.
==========
++++++++++
<Both>
++++++++++
==========
8. Trouble with VB 2005 Express (Continued)

John Mueller also had trouble installing VB 2005 Express. He said: "I
tried the installation on a dual processor 450 MHz system and it took
nigh on to forever to complete. My system had plenty of memory (512 MB)
and a large on disk cache (1 GB), but that didn't seem to matter. What
happened to the good old days of assembler (boy, am I dating myself)
when developers actually optimized their code?"

He also says: "I've used it quite a bit and think the Express products
are a good value if you can get them to run <g>."

John's written about a thousand Visual Basic books including "Mastering
Visual Web Developer 2005"
(http://www.amazon.com/exec/obidos/ASIN/0782144233/datacservip0f-20/),
which should be available soon.
==========
9. New HowTo: Write a DLL in Visual Basic .NET that saves images in
different formats (GIF, JPG, etc.) and call it from Visual Basic 6
http://www.vb-helper.com/howto_vb6_net_save_image.html
http://www.vb-helper.com/HowTo/howto_vb6_net_save_image.zip

Visual Basic 6 itself can save image files only in a bitmap format, not
in GIF, JPEG, or other formats. Visual Basic .NET can save images in
those formats, however. This example builds a VB .NET DLL that a VB 6
program can call to save images in those other formats.

In VB .NET, make a new DLL project. Select the Project\Properties menu
item. Open the Configuration Properties folder, click the Build page,
and check the "Register for COM Interop" box. This exposes the project's
public classes for use by Visual Basic 6.

The following code shows a very simple class that saves an image in a
bitmap, GIF, or JPEG file. It defines a public Enum to tell the
SaveImage routine the desired file format. SaveImage takes as its first
parameter a handle to a bitmap. The code uses that handle to create a
Bitmap object and calls its Save method. Compile the DLL.

Imports System.Windows.Forms
Imports System.Drawing
Imports System.Drawing.Imaging
Imports System.Runtime.InteropServices

<ClassInterface(ClassInterfaceType.AutoDual)> _
Public Class ImageSaver
    Public Enum saverImageFormats
        bmp
        gif
        jpg
    End Enum

    Public Sub SaveImage(ByVal hbm As IntPtr, ByVal file_name As String,
ByVal image_format As saverImageFormats)
        Dim bm As Bitmap = Bitmap.FromHbitmap(hbm)
        Select Case image_format
            Case saverImageFormats.bmp
                bm.Save(file_name, ImageFormat.Bmp)
            Case saverImageFormats.gif
                bm.Save(file_name, ImageFormat.Gif)
            Case saverImageFormats.jpg
                bm.Save(file_name, ImageFormat.Jpeg)
        End Select
    End Sub
End Class

In the Visual Basic 6 application, select Project\References. Click the
Browse button and select the .tlb file created for the .NET DLL. Now the
Visual Basic 6 program can use the public classes defined by the DLL.

The following code shows how the Visual Basic 6 program uses the DLL.

Private Sub cmdSave_Click()
Dim file_name As String
Dim saver As ImageSaver

    Set saver = New ImageSaver
    
    Select Case LCase$(Split(txtFile.Text, ".")(1))
        Case "bmp"
            saver.SaveImage Picture1.Image, txtFile.Text,
saverImageFormats_bmp
        Case "gif"
            saver.SaveImage Picture1.Image, txtFile.Text,
saverImageFormats_gif
        Case "jpg", "jpeg"
            saver.SaveImage Picture1.Image, txtFile.Text,
saverImageFormats_jpg
    End Select

    MsgBox "Done"
End Sub

While a Visual Basic 6 program can use this DLL to save images in new
formats, it does require you to install the rather large .NET framework.
==========
10. Karen Watterson's Weekly Destinations and Diversions (D & D)
http://www.vb-helper.com/karens_weekly_diversions.html

Readable/Watchable
    - As always, start here
<http://msdn.microsoft.com/recent/default.aspx>. Then check out
gotdotnet.com's user samples
<http://www.gotdotnet.com/Community/UserSamples/>. And read the VB team
blog postings <http://blogs.msdn.com/vbteam/>.
    - Portion of Chapter 6
lserver.techtarget.com/searchsqlserver/downloads/data_binding_proof.pdf>
on the DataGridView control (chapter material starts on page 15 of
48-page PDF) froom Brian Noyes' forthcoming book, Data Binding with
Windows Forms: Programming Smart Client Data Applications with .NET 2.0.

    - Scott Allen has posted several useful articles
<http://odetocode.com/Articles/default.aspx>, mainly about ASP.NET
topics, on his OdeToCode site.
    - Getting Started with My.Blogs
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnvs05/html/MyBlogsGetStart.asp>.

    - Doug Purdy's classic 2/02 article on the Factory Design pattern in
.NET
com/library/default.asp?url=/library/en-us/dnbda/html/factopattern.asp>.
Related: his articles on the Observer and Singleton patterns here
m/library/default.asp?url=/library/en-us/dnbda/html/observerpattern.asp>
and here
<http://msdn.microsoft.com/library/default.asp?url=/library/en-us/dnbda/html/singletondespatt.asp>.

    - James Avery's top ten add-ins for Visual Studio
sdn.microsoft.com/msdnmag/issues/05/12/VisualStudioAddins/default.aspx>.
TestDriven.NET, GhostDoc, Paster, CodeKeep, PInvoke.NET, VSWindowManager
PowerToy, WSContractFirst, VSMouseBindings, CopySourceAsHTML, and Cache
Visualizer.
    - GotCodeSnippets.NET
<http://channel9.msdn.com/Showpost.aspx?postid=121821>.
    - Good chart with rules of thumb for replacing network hardware
<http://www.networkworld.com/supp/2005/tips/112805-lifecycle-tips.html>.

    - VB futures. Here
<http://msdn.microsoft.com/vbasic/Future/default.aspx> and here
<http://msdn.microsoft.com/vbasic/pdc05/essential/default.aspx>.
    - Webcasts <http://www.microsoft.com/events/webcasts/ondemand.mspx>
such as the 12/1/05 ones on upgrading to SQL Server 2005, agile and
eXtreme programming (including how they're used at Microsoft), or the
Visual Studio Express 2005 C++ IDE.
    - (SQL) SQL Server 2005 XML Schemas
<http://schemas.microsoft.com/sqlserver/>.
    - (SQL) Shankar Pal's 9/1/05 paper on XQuery
<http://www.vldb2005.org/program/paper/thu/p1175-pal.pdf> presented at
VLDB 2005.
    - (SQL) Page describing the SQL Server 2005 Databases and Samples
<http://download.microsoft.com/download/d/8/6/d865cf0c-c44b-401b-b426-b3bf5c628112/SQLServerDatabasesAndSamplesOverview.htm>.

    - (SQL) Express Edition Samples Overview
<http://download.microsoft.com/download/f/a/a/faace3f4-03c1-4455-8acd-a8d7ad959ab3/SQLServerExpressSamplesOverview.htm>.


Selected KB articles
    - 908100 How to silently remove Visual Studio 2005 when it has been
installed in administrator mode.
<http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b908100>
    - 910804 You receive a "Proxy authentication required" error message
when you try to use Visual Studio 2005 online features.
<http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b910804>
    - 910741 (SQL) BUG: Login names that contain leading zero characters
are not visible when you use SQL Profiler to audit connections to SQL
Server 2000.
<http://support.microsoft.com/default.aspx?scid=kb%3ben-us%3b910741>

Downloadable
    - MVP.XML Library <http://sourceforge.net/projects/mvp-xml>. Related
<http://blogs.msdn.com/XmlTeam/>.
    - Son of Smartpart
t.com/workspaces/workspace.aspx?id=6cfaabc8-db4d-41c3-8a88-3f974a7d0abe>
that lets you run ASP.NET 2.0 UserControls and WebParts in the current
version of SharePoint.
    - Microsoft .NET Framework SDK version 2.0
<http://www.microsoft.com/downloads/details.aspx?FamilyID=fe6f2099-b7b4-4f47-a244-c96d69c35dec&DisplayLang=en>.

    - Microsoft .NET Framework SDK version 2.0 Samples Download
<http://www.microsoft.com/downloads/details.aspx?FamilyID=adef80f9-1e44-4b94-be24-dff48f826ce6&DisplayLang=en>.

    - Microsoft CRM 3.0 SDK
<http://www.microsoft.com/downloads/details.aspx?FamilyID=9C178B68-3A06-4898-BC83-BD14B74308C5&displaylang=en>.

    - WOW OPML browser <http://www.opmlmanager.com/opmlbrowser/> (early
version). Related <http://www.dltq.org/?p=747>.
    - Brian Noyes' Chapter 6 on the DataGridView control
lserver.techtarget.com/searchsqlserver/downloads/data_binding_proof.pdf>
from his forthcoming book, Data Binding with Windows Forms: Programming
Smart Client Data Applications with .NET 2.0. Related: his blog
<http://www.softinsight.com/bnoyes/> and sample code from his 11/29/05
DataGridView control Webcast
<http://www.softinsight.com/bnoyes/PermaLink.aspx?guid=59ae0941-a088-4d69-8d9e-c48dab56bc2d>.

    - A beta release of Oracle's own Express Edition
w.oracle.com/technology/software/products/database/oracle10g/index.html>
(157 MB!) along with a beta of its Oracle Developer Tools (18 MB) for
Visual Studio .NET 10.2.0.1 for the EE.

Browsable
    - Agile Programmer community blogs
<http://www.agileprogrammer.com/>. Peter Provost's especially
recommended.
    - Clusty (clustering search engine) has specialized sites such as
this one <http://gov.clusty.com> and this one <http://
blogs.clusty.com>.
    - Jimmy Nilsson's blog <http://www.jnsk.se/weblog/>.
    - Martin Fowler's "bliki" <http://www.martinfowler.com/bliki/>
(blog/Wiki).
    - Absolutely awesome site by Serge Baranovsky
<http://vbfeeds.com/about.asp>.
    - (SQL) SQL Server 2005 BOL online
<http://msdn2.microsoft.com/en-us/library/ms130214(en-us,SQL.90).aspx>.
    - (SQL) MVP Tony Rogerson's SQLServerFAQ site
<http://www.sqlserverfaq.com/>.

Jargon Alert
    - SPL <http://www.dclab.com/spl_standard.asp> - structured product
labeling, a new XML-based drug labeling standard.
    - phase-contrast X-rays
<http://www.ncbi.nlm.nih.gov/entrez/query.fcgi?cmd=Retrieve&db=PubMed&list_uids=15487716&dopt=Citation>.

    - FEC
<http://www.networkworld.com/news/tech/2005/112805techupdate.html> -
Forward Error Correcting.
    - GZK - Greisen-Zatsepepin-Kuzmin. The theoretical upper energetic
limit (5x10^19 eV) of cosmic rays reaching earth.

Travelable
    - Search Engine Strategies conference
<http://www.jupiterevents.com/sew/fall05/registration.html>, Dec 5-8 in
Chicago.

Heads Up
    - Good article by John Fontana, Microsoft turning toward an all
64-bit world
<http://www.networkworld.com/news/2005/112105-microsoft.html>.
    - Find out who's producing at least 500# of hazardous chemicals in
your neighborhood while the getting's good (EPA is trying to weaken the
requirement). Type in city or zip code here
<http://www.epa.gov/enviro/html/ef_overview.html> and (EPA newsroom
ov/opa/admpress.nsf/Press%20Releases%20-%20Hazardous%20Waste!OpenView>).
Related: EPA acronyms <http://www.epa.gov/glossary/aaad.html>.
    - Jeremy Allaire's Brightcove startup <http://www.brightcove.com/>,
targeting Internet TV. (Jeremy was the co-founder and CTO of Allaire,
which merged with Macromedia where he also served as CTO).

Questions To Ponder
    - Last week, I picked up a copy of Ray Bradbury's collection of
essays, "Bradbury Speaks" in my local library's new books section. In
one essay, Bradbury talks about the Book People in Fahrenheit 451 who
memorize books to preserve civilization. Which single book would you
want to memorize? (The correct answer is "Visual Basic 2005 Programmer's
Reference!" -- Rod ;-)

Misc
    - Fascinating article on Neurons and Navigation
<http://www.mcb.harvard.edu/Lichtman/JDclub/pdfs/buzsaki.pdf> about
where (the entorhinal cortex) the brain may represent location geometry.
Image of region
<http://www.ohsu.edu/research/alzheimers/vol_entorhinal.htm>. Related:
Fascinating 12/2/05 Science Friday hour (broadcast live from the
American Psychological Association's Science Leadership Conference)
about gender differences in cognition
<http://www.sciencefriday.com/pages/2005/Dec/hour1_120205.html>. Guests
cited well-known evidence reflecting men's better spatial visualization,
women's better verbal skills, along with others you might be less
familiar with. Worth the replay. One suggestion: have kids play Tetris.
    - Cartoons I've enjoyed recently: 1) Flashback from 1993 where a
couple, reading about the Clinton health care plan, complain "This is
soooo complicated". The "Today" panel shows an older couple trying to
decipher paperwork (Drug Benefit Plan #76B, New Co-Pay, Referral,
Deductible, etc.). Husband is on phone: "Hello, Hillary?" 2) One cat to
another: I purr, but half the time I don't mean it." 3) Dilbert cartoons
on sexy engineers and agile programming. here
<http://www.dilbert.com/comics/dilbert/archive/dilbert-20051119.html>
and here
<http://www.dilbert.com/comics/dilbert/archive/dilbert-20051116.html> 4)
Sign at one end of line of birds in a park: Caution - Buried Telephone
Wire. 5) One women in pew to another during sermon: "Longwindedness may
not be a sin, but it's close."
    - Quote by Major Dan Williams speaking to Fox Company, reproduced in
the 11/14/05 issue of Time: "You've almost had insurgency Darwinism. All
the stupid ones are dead."
    - IBM's Watson Labs
<http://www.columbia.edu/acis/history/watsonlab.html> (photos and brief
history).
    - Excellent 30-minute Science Friday segment
<http://www.sciencefriday.com/pages/2005/Nov/hour2_112505.html> (replay,
MP3 available) about multiple dimensions, string theory, etc.
    - One group's list of Best Toys for 2005 <http://tinyurl.com/8m89v>.

    - Humor: 1) This from comedian Conan O'Brien as quoted on a recent
Time's Punchline page: "After 25 years on the air, Ted Koppel hosted his
final episode of Nightline. Immediately after the show, he drove upstate
and released his hair into the wild." Also, Alex Papadimoulis's awe at
his newly-minted MVP status
<http://weblogs.asp.net/alex_papadimoulis/archive/2005/11/13/430478.aspx>.

    - Death by a thousand cuts
<http://www.fastcompany.com/magazine/100/berrett-koehler.html> ...or,
life in the author's lane.
    - Chinese agricultural/botanic research
<http://news.scotsman.com/scitech.cfm?id=2343292005>.
    - Digital Atlas of Texas counties
<http://gis.geog.ttu.edu/txcountyatlas/>.
    - Chaos-based encryption demonstrated
<http://www.sciencenews.org/articles/20051119/fob5.asp>.
    - Virgin Atlantic's Richard Branson plans cellulosic ethanol
research
<http://business.scotsman.com/topics.cfm?tid=605&id=2253282005>.
    - Monthly moon names
<http://stardate.org/resources/faqs/faq.php?id=11>.
    - Read about and view images from the recent work of Visions '05
<http://www.visions05.washington.edu/>, an oceanographic research
project off the US Northwest and British Columbia coasts. Led by UW
oceanographers, the team obtained underwater images from the remotely
operated vehicles ABE and Jason II.
    - John A. Lewis' 44-page 10/05 policy analysis paper, Waiting for
Sputnik
<http://www.csis.org/media/csis/pubs/051028_waiting_for_sputnik.pdf>,
which suggests that "the underfunding of basic research in physics, math
and engineering is not a problem for science policy or business, but a
major challenge for the future security of the United States." See a
list of other recent CSIS papers
<http://www.csis.org/index.php?option=com_content&task=view&id=28&Itemid=72>

    - HG Wells' 1937 essay on a World Brain: The Idea of a Permanent
World Encyclopaedia
<http://sherlock.berkeley.edu/wells/world_brain.html>.
    - For 5th-8th graders: toychallenge.com
<http://www.toychallenge.com/>.
    - Dr. Ben Gladacre's site on how the media misrepresents science
<http://www.badscience.net/>.
    - Recalling the Homebrew Computer Club
<http://www.sdtimes.com/article/story-20051201-03.html>.
    - Business Week's new list of the 50 most generous philanthropists
<http://www.businessweek.com/magazine/toc/03_48/B38600348giving.htm>.
(Gordon and Betty Moore take the top spot, followed by Bill and Melinda
Gates, Warren Buffet, George Soros, and Eli and Edythe Broad).
    - Good six-page article with 10 tips on being a consultant
<http://www.sdmagazine.com/documents/s=9933/sdm0512a/>.
    - BBC's archive of Radio 4 nature programs
<http://www.bbc.co.uk/radio4/science/nature.shtml>.
==========
Archives:
    http://www.topica.com/lists/VBHelper
    http://www.topica.com/lists/VB6Helper
    http://www.topica.com/lists/VBNetHelper
    
http://www.vb-helper.com/cgi-bin/mojo/mojo.cgi?flavor=archive&list=VB_Helper_Newsletter


Post questions at:
    http://www.topica.com/lists/VBHelperQA
	
 Previous Message All Messages Next Message 
  Check It Out!

  Topica Channels
 Best of Topica
 Art & Design
 Books, Movies & TV
 Developers
 Food & Drink
 Health & Fitness
 Internet
 Music
 News & Information
 Personal Finance
 Personal Technology
 Small Business
 Software
 Sports
 Travel & Leisure
 Women & Family

  Start Your Own List!
Email lists are great for debating issues or publishing your views.
Start a List Today!

© 2001 Topica Inc. TFMB
Concerned about privacy? Topica is TrustE certified.
See our Privacy Policy.