По поводу кода:
Описан обработчик ошибок. Откатывается транзакция, сообщается код ошибки с её описанием (ошибка при добавлении записи) и тебя выбрасывают.
Objects Marked Both that Do not Support the Free-threaded Marshaler Will Fail if They Are Stored in Application Scope
Both-modeled components must aggregate the FTM (Free-Threaded Marshaler) to be stored in Application state. In IIS 4.0, you get away with this (if you can call it getting away), but the object actually gets treated as an STA (Single-threaded Apartment) object and kills the performance of the application. If, when using IIS 5.0, you do not aggregate the FTM and you store your Both-modeled object, ASP will return the following error message:
Application object, ASP 0197 (0x80004005)<br>Cannot add object with apartment model behavior to the application intrinsic object.
<b>/dev/VC/ATL/BothNoFTM/Test.asp, line 12
For a discussion on how to aggregate the FTM, see "Agility in Server Components."
222990 FIX: BUG: Error 0x80004005 Calling Certain Stored Procedures in Oracle
RESOLUTION
It is possible to reduce the number of parameters in your SQL Statement and thereby avoid this error. Or you can choose to select the Microsoft OLEDB Provider for ODBC, so you may connect to the Oracle database through an Oracle ODBC driver.
272693 0x80004005 ASP Error Message Occurs When You Connect to a Database After Crystal Reports 8 Installation
RESOLUTION
Download and run the fix from the following Web site:
http://support.seagatesoftware.com/c..._webregfix.exe
CAUSE
This is a known issue that occurs when IIS or any other application creates and attempts to use a System DSN after the installation of Crystal Reports 8. For more information, see the following Crystal Decisions Knowledge Base article:
http://support.crystaldecisions.net/...s/c2007581.asp
The Crystal Reports installation modifies the permissions for the HKEY_LOCAL_MACHINE\Software\ODBC\odbc.ini registry key and its subkeys. The Everyone group's permissions are changed from Special Access to Full Control.
When you create a new System DSN, it does not inherit the Windows NT default permissions, or the new permissions created by the Crystal Reports 8 installation. Instead, the subkey for the new DSN receives permissions for two user groups:
Local Machine\Administrators -- Full Control
SYSTEM -- Full Control
Only the permissions for Administrators are set, and no permissions are set for the Everyone group. Therefore, only users with Administrator rights can access the System DSN.
273482 PRB: Error "Request Object, ASP 0107 (0x80004005)" When You Post a Form
RESOLUTION
To resolve this problem, use one of the following methods:
Instead of reading form variable values with the Request.Form collection, use Request.BinaryRead (Request.TotalBytes), and parse the form values from the output of Request.BinaryRead.
Use a File Upload scheme, such as Microsoft Posting Acceptor.
Break the HTML form variables into multiple form variables before you submit the form. The 102,399 byte limit is for each form variable, so you can have multiple form variables of 102,399 characters or less. The following sample code illustrates this: WARNING: ANY USE BY YOU OF THE CODE PROVIDED IN THIS ARTICLE IS AT YOUR OWN RISK. Microsoft provides this code "as is" without warranty of any kind, either express or implied, including but not limited to the implied warranties of merchantability and/or fitness for a particular purpose.
<FORM method=post action=LargePost.asp name=theForm onsubmit="BreakItUp()">
<Textarea rows=3 cols=100 name=BigTextArea>A bunch of text...</Textarea>
<input type=submit value=go>
</form>
<SCRIPT Language=JavaScript>
function BreakItUp()
{
//Set the limit for field size.
var FormLimit = 102399
//Get the value of the large input object.
var TempVar = new String
TempVar = document.theForm.BigTextArea.value
//If the length of the object is greater than the limit, break it
//into multiple objects.
if (TempVar.length > FormLimit)
{
document.theForm.BigTextArea.value = TempVar.substr(0, FormLimit)
TempVar = TempVar.substr(FormLimit)
while (TempVar.length > 0)
{
var objTEXTAREA = document.createElement("TEXTAREA")
objTEXTAREA.name = "BigTextArea"
objTEXTAREA.value = TempVar.substr(0, FormLimit)
document.theForm.appendChild(objTEXTAREA)
TempVar = TempVar.substr(FormLimit)
}
}
}
</SCRIPT>
The receiving Active Server Page (ASP) page reconstructs the variable:
<%
Dim BigTextArea
For I = 1 To Request.Form("BigTextArea").Count
BigTextArea = BigTextArea & Request.Form("BigTextArea")(I)
Next
%>