Lesson 1 : Overview --------------------------------------------------------------------------------This article serves as a quick "How To" example for using string buffering to concatenate strings in a VB component. The example VB code will generate a HTML TABLE record that will be sent to an asp file after being populated with data from a database table. The GetRows() method will be used to acquire the data from an example Access database. In many circumstances, sending a Variant array populated by GetRows(), (or a RecordSet) to an asp file from a VB component is the recommended way to build a HTML TABLE record. Other times you may choose to build a HTML TABLE record, or other database dependant code, within the VB component itself before sending it to an asp file. This may not set well with the "true believers" in not mixing HTML and VB code. I tend to be agnostic and I find sacrificing orthodoxy for speed is sometimes called for with server-side components. In any regard, this programming choice is exemplified here. Rather than sending the HTML code from the VB component with the Response.Write method, you can optionally collect the HTML within a string and send it back as a complete HTML TABLE record. This avoids the need to instantiate the asp object within the VB component. It also allows other VB code to use your component without reference to asp. You"re just generating pure HTML code that any COM object can use. But when putting together a large HTML string in VB, the concatenation operant "&" can slow your code down significantly. We"ll be creating two methods, MethodName() and DoBuffer(). The MethodName() method will acquire data from a database and then use this data to construct a HTML TABLE record it will send to the calling asp file in one lump sum. Our asp file will initially call the MethodName() method with an sql statement, a connection string, and the number of fields used in our sql statement. In order to generate the HTML string with the least use of the concatenation operant, the MethodName() method will send the string fragments it uses to build the HTML TABLE record to the DoBuffer() method. The supporting database file, text, and code, for this article can be downloaded here. If you"re unfamiliar with writing a server-side VB dll, you can read some introductory articles at my site. This example will include a VB server-side dll (ActiveX dll) consisting of one class (ClassName) and two methods (MethodName and DoBuffer). The VB project is named How2Project4. For How2 articles on sending data to asp files with Variant Array/GetRows() and RecordSets see: How To Pass a Variant Array Populated with a RecordSet From a VB Component to an asp File How To Pass a RecordSet From a VB Component to an asp File. NOTE: The connection string value will need to contain the Data Source Name (DSN) that should first be established with ODBC, although any valid database connection string will work here. ADO will also need to be referenced in the VB project (see an introductory VB component article on how to do this). Why Use String Buffering? If you concatenate strings using the "&" operant, and you repeat this operation multiple times, processing time will be significantly delayed compared to using string buffering. Here"s example code of both techniques: Concatenating using the "&" operant: StrHold = "Testing one, " StrHold = StrHold & "two, " StrHold = StrHold & "three."
Concatenating using a string buffering method: S1, S2, S3, "Testing one, " S1, S2, S3, "two, " S1, S2, S3, "three."
[This code fragment uses different method and variable names from the code in this article] With large amounts of concatenating, I have experienced increases in speed of up to 1000 times greater when using string buffering. This is primarily due to how VB manages the memory for strings with the "&" operant.
(出处:不详 ) |