Wrox Home  
Search P2P Archive for: Go

  Return to Index  

asp_databases thread: inserting a new record or updating an existing one


Message #1 by maxfinancial@y... on Tue, 11 Sep 2001 22:50:14
Hi,

I need to save approval comments into an approvals

table. The approval comments are relative to a

selected project management document. 

In the approvals table there are only some approval

records(or none) as not all the documents are approved

at any given one time.

The script which I wrote works when it finds records

already stored in the table that are relative to the

selected document. When it finds no records for the

selected document, then it starts looping while

displaying blank page.



In brief I need a script which updates an existing

record for a selected document (tracked by RevID)

and/or inserts a new record when no records exist for

the selected document. 

Also I need to be able to display information (i.e.

RES_NAME in MSP_WEB_RESOURCES and APPROVAL_DATE in

CPS_WEB_DOC_APPROVALS) for those selected documents

which have already records in the approvals table -

this is the second select statement in the script

approval.asp. Now it displays information when it

finds records in the appr.table but, when it doesn't,

it doesn't load the page at all.



Please find approval.asp, approvalcommenta.asp and db

structure below.



This is the action SQL statement -what I say is: if

the DOC_ID in the approvals table (i.e. rsAPPs)

doesn't match the DOC_ID in the documents table (i.e.

rsRisk) then there is no record for that document in

the approvals table and therefore a new record should

be inserted.  Otherwise - if it matches -update

existing record.



<script language="JScript">



function FinishBtn_OnClick(nRevID) {



var appr=<%=rsApps("REV_ID")%>;

var risk=<%=rsRisk('REV_ID')%>;

if (appr != risk) {

               

var sqlAPPR = "insert into [CPS_WEB_DOC_APPROVALS] (

\n" +

          "[DOC_ID], \n" +

          "[REV_ID], \n" +

          "[WRES_ID], \n" +

          "[APPROVAL_DATE], \n" +

          "[COMMENTS] ) \n" +

          "values ( \n" +

          "<%=rsRisk('DOC_ID')%>,\n" +

          "<%=rsRisk('REV_ID')%>,\n" +

          "<%=rsRisk('OWNER_WRES_ID')%>,\n" +

           "'" + VTDateToUSDate( new Date ) + "',\n" +

           "'" + idForm.idCOMMENTS.value + "' )\n";

     }

     else {

var sqlAPPR = "UPDATE [CPS_WEB_DOC_APPROVALS] SET \n"

+

"[DOC_ID] = <%=rsRisk('DOC_ID')%>,\n" +

"[REV_ID] = <%=rsRisk('REV_ID')%>,\n" +

"[WRES_ID] = <%=rsRisk('OWNER_WRES_ID')%>, \n" +

"[APPROVAL_DATE] = '" + VTDateToUSDate( new Date ) +

"',\n" +

"[COMMENTS] = '" + idForm.idCOMMENTS.value + "' \n" +

" WHERE [DOC_ID] = <%=rsApps('REV_ID')%>\n";

     

     }

          

           

// Set form variables

     idForm.sqlAPPR.value = sqlAPPR;

     

     idForm.submit();

     }





</script>



-----------------------------------------

THAT'S THE WHOLE SCRIPT - APPROVALCOMMENT.ASP

----------------------------------------

<%@ Language="VBScript" %>

<%



//FIRST SQL SELECT STATEMENT



var sql = "select distinct CPS_WEB_RISKS.*,

CPS_WEB_DOC_REVISIONS.*, CPS_WEB_DOCUMENTS.* from ";

sql += "(CPS_WEB_RISKS inner join ";

sql += " (CPS_WEB_DOC_REVISIONS inner join ";

sql += " (CPS_WEB_DOCUMENTS inner join

MSP_WEB_RESOURCES ";

sql += " on CPS_WEB_DOCUMENTS.[OWNER_WRES_ID] 

MSP_WEB_RESOURCES.[WRES_ID]) ";

sql += " on CPS_WEB_DOC_REVISIONS.[DOC_ID] 

CPS_WEB_DOCUMENTS.[DOC_ID]) ";

sql += "on CPS_WEB_RISKS.[REV_ID] 

CPS_WEB_DOC_REVISIONS.[REV_ID]), ";

sql += "CPS_WEB_DOC_ACCESS, CPS_WEB_DOC_APPROVALS

where ";

sql += "CPS_WEB_DOC_REVISIONS.[CURRENT] = 1";

sql += " and ";

sql += "CPS_WEB_DOCUMENTS.[REV_ID] = ";

sql += Request.QueryString("RevID");

sql += " and ";

sql += "CPS_WEB_DOCUMENTS.OWNER_WRES_ID 

MSP_WEB_RESOURCES.WRES_ID";



var rsRisk = oConn.Execute(sql);



%>

<HTML>

<HEAD>

<META NAME="GENERATOR" Content="Microsoft Visual

Studio 6.0">

<TITLE></TITLE>



</HEAD>

<BODY LANGUAGE=javascript onload="return

window_onload()">

<FORM ID="idForm" name="RiskForm"

ACTION="ApprovalCommenta.asp" METHOD="post"

STYLE="margin: 0; padding: 0;">

<%



//SECOND SQL SELECT STATEMENT



var sql = "select CPS_WEB_DOC_APPROVALS.*,

CPS_WEB_DOC_REVISIONS.*, [RES_NAME] from ";

sql += "CPS_WEB_DOC_APPROVALS, CPS_WEB_DOC_REVISIONS,

MSP_WEB_RESOURCES where ";

sql += "CPS_WEB_DOC_APPROVALS.[REV_ID] 

CPS_WEB_DOC_REVISIONS.[REV_ID] ";

sql += "and CPS_WEB_DOC_APPROVALS.[WRES_ID] 

MSP_WEB_RESOURCES.[WRES_ID] ";

sql += "and CPS_WEB_DOC_REVISIONS.[REV_ID] = ";

sql += Request.QueryString("RevID");

sql += " order by [VERSION_ID]";



var rsApps = oConn.Execute( sql );



//while( !rsApps.EOF ) {

%>



<TD>This risk document was approved on: 

<%=rsApps("APPROVAL_DATE")%></TD><br>

<TD>by: 

<%=rsApps("RES_NAME")%></TD><p><TD></TD>



<!--

     COMMENT

     ----------------

-->

     <BR>

     <DIV CLASS="SectionHeaderBlank">Provide a short

comment:</DIV>

     <DIV STYLE="FONT-SIZE: 70%; MARGIN-LEFT: 12px;

MARGIN-TOP: 12px">



     <TABLE CLASS="DisplayText" CELLSPACING="0"

CELLPADDING="0" STYLE="FONT-SIZE: 1em">

          <TR>

               <TD>

                    <LABEL FOR="idCOMMENTS"

CLASS="InputLabel" TITLE="" ACCESSKEY="C">Comment:

</LABEL>

               </TD>

          </TR>

          <TR height=3></TR>

          <TR>

          

          

          

               <TD>

<Textarea class="TextArea" id="idCOMMENTS"

name="COMMENTS" style="FONT-SIZE: 1em; HEIGHT: 125px;

WIDTH: 600px"><%=rsApps("COMMENTS")%></textarea>

     

               </TD>

          </TR>

          

     </TABLE>

<P align=center>



      <TD>

<BUTTON ID="idFinishBtn" NAME="idFinishBtn"

CLASS="InputButton" STYLE="width:75"

ONCLICK="FinishBtn_OnClick()" TITLE="Finish"

ACCESSKEY="F">Finish</BUTTON>

                    </TD>

      <TD>

<BUTTON id="idCancelBtn" name="idCancelBtn"

class="InputButtonHighlight" STYLE="width:75;"

onclick="CancelBtn_OnClick()" TITLE="Cancel"

ACCESSKEY="C">Cancel</BUTTON>

                    </TD>

                    </TR></TABLE> </P>





<!--<INPUT ID="idAPPROVAL_DATE" TYPE="hidden"

NAME="APPROVAL_DATE" >-->

<SCRIPT LANGUAGE="JScript">

<!--idForm.idAPPROVAL_DATE.value = JSDateToUKDate( new

Date );-->

</SCRIPT>



<INPUT ID="sqlAPPR" NAME="sqlAPPR" TYPE="hidden"

style="LEFT: 20px; TOP: 395px"></INPUT> 

</FORM>





<script language="JScript">



//action SQL statement as already mentioned



function FinishBtn_OnClick(nDocID) {



var appr=<%=rsApps("DOC_ID")%>;

var risk=<%=rsRisk('DOC_ID')%>;

if (appr != risk) {

               

               var sqlAPPR = "insert into

[CPS_WEB_DOC_APPROVALS] ( \n" +

                         "[DOC_ID], \n" +

                         "[REV_ID], \n" +

                         "[WRES_ID], \n" +

                         "[APPROVAL_DATE], \n" +

                         "[COMMENTS] ) \n" +

                         "values ( \n" +

                         "<%=rsRisk('DOC_ID')%>,\n" +

                         "<%=rsRisk('REV_ID')%>,\n" +

                        

"<%=rsRisk('OWNER_WRES_ID')%>,\n" +

                         "'" + VTDateToUSDate( new

Date ) + "',\n" +

                         "'" + idForm.idCOMMENTS.value

+ "' )\n";

     }

     else {

               var sqlAPPR = "UPDATE

[CPS_WEB_DOC_APPROVALS] SET \n" +

                         "[DOC_ID] 

<%=rsRisk('DOC_ID')%>,\n" +

                         "[REV_ID] 

<%=rsRisk('REV_ID')%>,\n" +

                         "[WRES_ID] 

<%=rsRisk('OWNER_WRES_ID')%>, \n" +

                         "[APPROVAL_DATE] = '" +

VTDateToUSDate( new Date ) + "',\n" +

                         "[COMMENTS] = '" +

idForm.idCOMMENTS.value + "' \n" +

                         " WHERE [DOC_ID] 

<%=rsApps('DOC_ID')%>\n";

     

     }

          

           

// Set form variables

     idForm.sqlAPPR.value = sqlAPPR;

     

     idForm.submit();

     }



</script>



<P> </P>



</BODY>

</HTML>



-------------------------------------------

-------------------------------------------

----------THIS IS THE SCRIPT WHERE IT EXECUTES------

APPROVALCOMMENTA.ASP



<%

function Shell_ActionsPane_GetCurrentItemID() {

return 'idDocsRiskTC';

}





function SubmitRisk() {



     var oConn;

     var oRset;

     var docID;

     var revID;

     



     var sqlAPPR = Request.Form("sqlAPPR").Item;

     var sqlIDENT = "select @@identity";





     try {

          // create a connection and open a

transaction

          oConn.Open();

          oConn.BeginTrans();





          //

          // Approvals

          //



          sMsg += "<br>CPS_WEB_DOC_APPROVALS<br>";

          sMsg += sqlAPPR;

          sMsg += "<br>";



     // begin the transaction & create a document

          oConn.Execute( sqlAPPR );



          // retrieve the ID of the document

          oRset = oConn.Execute( sqlIDENT );

          docID = oRset.Fields(0).Value;

          oRset.Close();





     } catch( e ) {



          sMsg += "ADO Error: " +

oConn.Errors(0).Description + "<BR>";

          oConn.RollbackTrans();

          oConn.Close();

          oConn = null;

          return;

     }



     // commit and clean up

     try {

          oConn.CommitTrans();

          sMsg += "<br><br>"

     sMsg += "Transaction successfully completed";

          oConn.Close();

          oConn = null;

     }

     catch( ignore ) { }



     Response.Redirect("Risk.asp");



}



SubmitRisk();







%>



<SCRIPT LANGUAGE="JScript">



</SCRIPT>





<DIV ID="idTranReturnCode">

<DIV CLASS="SectionHeaderInfo" STYLE="FONT-SIZE:

0.7em">Transaction results:</DIV>

<BR>

<DIV id="idTranMsg" CLASS="Text" STYLE="FONT-SIZE:

70%; MARGIN-LEFT: 12px; MARGIN-TOP:

8px"><%=sMsg%></DIV>

</DIV>



-------------------------------------------

-------------------------------------------

---------------DATABASE STRUCTURE--------------

if exists

(select * from sysobjects

where id = object_id(N'[PCOwner].[CPS_WEB_RISKS]')

and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [PCOwner].[CPS_WEB_RISKS]

GO



CREATE TABLE [PCOwner].[CPS_WEB_RISKS] (

     [RISK_ID] [int] identity ,

     [DOC_ID] [int] NOT NULL ,     -- (FK)

CPS_WEB_DOCUMENTS.DOC_ID

     [REV_ID] [int] NOT NULL,          -- (FK)

CPS_WEB_DOC_REVISIONS.REV_ID

     [RISK_NUM] [varchar] (28) NOT NULL,

     [RISK_TYPE] [smallint] NOT NULL default 0 CHECK (

RISK_TYPE IN (0,1,2)) , -- 0=cost, 1=schedule,

2=quality

     [DATE_IDENTIFIED] [datetime] NOT NULL,

     [DATE_EXPIRES] [datetime] NULL ,

     [LIKELIHOOD] [smallint] NOT NULL default 0 CHECK

( LIKELIHOOD IN (0,1,2)) , -- 0=low, 1=medium, 2=high

     [SEVERITY] [smallint] NOT NULL default 0 CHECK (

SEVERITY IN (0,1,2)) , -- 0=low, 1=medium, 2=high

     [DESCRIPTION] [varchar] (512) NOT NULL,

     [COUNTER_MEASURE] [varchar] (512) NULL

     

) ON [PRIMARY]



CREATE UNIQUE CLUSTERED INDEX [UC1_WEB_RISKS]

ON [PCOwner].[CPS_WEB_RISKS]([RISK_ID])

ON [PRIMARY]

GO





if exists

(select * from sysobjects

      where id 

object_id(N'[PCOwner].[CPS_WEB_DOCUMENTS]')

      and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [PCOwner].[CPS_WEB_DOCUMENTS]

GO





CREATE TABLE [PCOwner].[CPS_WEB_DOCUMENTS] (

     [DOC_ID] [int] identity ,

     [WPROJ_ID] [int] NOT NULL ,      -- (FK)

MSP_WEB_PROJECTS.WPROJ_ID

     [WTASK_ID] [int] NULL ,          -- (FK) to task

table ???? FIXME

     [OWNER_WRES_ID] [int] NOT NULL ,     -- (FK)

MSP_WEB_RESOURCES.WRES_ID

     

) ON [PRIMARY]





CREATE UNIQUE CLUSTERED INDEX [UC1_WEB_DOCUMENTS]

ON [PCOwner].[CPS_WEB_DOCUMENTS]([DOC_ID])

ON [PRIMARY]

GO











if exists

     (select * from sysobjects

      where id 

object_id(N'[PCOwner].[CPS_WEB_DOC_ACCESS]')

      and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [PCOwner].[CPS_WEB_DOC_ACCESS]

GO



CREATE TABLE [PCOwner].[CPS_WEB_DOC_ACCESS] (

     [DOC_ID] [int] NOT NULL ,     -- (FK)

CPS_WEB_DOCUMENTS.DOC_ID

     [WRES_ID] [int] NOT NULL ,     -- (FK)

MSP_WEB_RESOURCES.WRES_ID

     [ACCESS] [smallint] NOT NULL default 0 CHECK (

ACCESS IN (0,1)) -- 0=reader, 1=writer

) ON [PRIMARY]







if exists

     (select * from sysobjects

      where id 

object_id(N'[PCOwner].[CPS_WEB_DOC_REVISIONS]')

      and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [PCOwner].[CPS_WEB_DOC_REVISIONS]

GO



CREATE TABLE [PCOwner].[CPS_WEB_DOC_REVISIONS] (

     [REV_ID] [int] identity ,

     [DOC_ID] [int] NOT NULL ,     -- (FK)

CPS_WEB_DOCUMENTS.DOC_ID

     [CURRENT] [bit] NOT NULL default 1 ,

     [VERSION_ID] [int] NOT NULL ,

     [REV_DATE] datetime NOT NULL DEFAULT

CURRENT_TIMESTAMP,

     [CHANGE_SUMMARY] [varchar] (512) NOT NULL

     [DOC_STATUS] [smallint] NOT NULL default 0 CHECK

( DOC_STATUS IN (0,1,2)) , --0=draft,

1=under-review, 2=approved

     [DOC_LINK] [varchar] (100) NULL ,

     [NEXT_REV_DATE] [datetime] NULL ,

     [LAST_DIST_DATE] [datetime] NULL

) ON [PRIMARY]



CREATE UNIQUE CLUSTERED INDEX [UC1_DOC_REVISIONS]

ON [PCOwner].[CPS_WEB_DOC_REVISIONS]([REV_ID])

ON [PRIMARY]

GO



if exists

     (select * from sysobjects

      where id 

object_id(N'[PCOwner].[CPS_WEB_DOC_APPROVALS]')

      and OBJECTPROPERTY(id, N'IsUserTable') = 1)

drop table [PCOwner].[CPS_WEB_DOC_APPROVALS]

GO



CREATE TABLE [PCOwner].[CPS_WEB_DOC_APPROVALS] (

     [DOC_ID] [int] NOT NULL ,     -- (FK)

CPS_WEB_DOCUMENTS.DOC_ID

     [REV_ID] [int] NOT NULL ,     -- (FK)

CPS_WEB_DOC_REVISIONS.REV_ID

     [WRES_ID] [int] NOT NULL ,     -- (FK)

MSP_WEB_RESOURCES.WRES_ID

     [APPROVAL_DATE] datetime NOT NULL DEFAULT

CURRENT_TIMESTAMP,

     [COMMENTS] [varchar] (512) NULL

) ON [PRIMARY]



-------------------------------------------

-------------------------------------------



best regards,

Max


  Return to Index