asp tutorial for programmer

I have inherited a web based application.  To be accurate I am the system analyst who designed the system from the user's requirements.

My skillset goes back a long way with programming skills, over 30 years.  However I have never maintained a web based system before.

There is a need to add another column to a report produced from teller_report.asp.  Viewing this in a text editor, I could almost determine what needs to be done.

Can someone recommend an online tutorial on how to link this to Visual Studio 2016?

Secondly could someone suggest how I can set up a test environment to test my changes?  I have the ability to create a copy of the database.  Though the report is just that it does not update the tables.

Attached is a screenshot of FTP of some of the files.

Thanks
FTP_ASP_Files.jpg
Nigel Keith-WalkerContractorAsked:
Who is Participating?
 
Ares KurkluSoftware EngineerCommented:
That should work fine, you may have to increase the
Response.Write("<tr><td colspan=""7""
to 8 as well,
as you would be having 8 columns.

Depending on the size of the data in each column the width may be different, I cannot see much styling in there.
There should be a <table> tag above that code there may also be some styling CSS (may be external)

You can put your line of code whenever you like depending on the order perhaps to the end just before

      Response.Write("<td class="""& strClass &""" style=""text-align:right;"">"& FormatNumber(Nz(objRS("RecAmount")) ,2) &" "& objRS("RecCurr") &"</td>")
[HERE]
Response.Write("</tr>")

Also if you want the country text to be right or left aligned you can use the inline style which is used in some columns like
style=""text-align:right;""
Otherwise, the best way to check if it works and how it looks would be to save it as  teller_report2.asp and test it in production.
0
 
Ares KurkluSoftware EngineerCommented:
Hi,
To be able to set up an exact environment in your development environment may take time, if you have the database then you need to set up IIS an app pool etc..

Since this is just a report and it will only do read, and it won't update anything in the database you should be safe to test it in production environment, and it should be possible for you to duplicate the report file with another name like
 teller_report2.asp and test and see the changes that way.

If you are talking about setting up VS 2016 so that you can open and edit the file, I find that unnecessary for ASP, notepad or notepad++ is what I would be using since you can not debug the ASP code.
But If you really want to use VS for FTP you can just go to File menu / Open select Web Site then select FTP and put the FTP details.

Here is a link to a tutorial:
http://asptutorial.info/learn/OpenReadCreate-files.html

Happy to help with the ASP code if you are stuck.
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Interesting.  So to add another column to the following report coding:


 
				If objRS.Eof Then
					Response.Write("<tr><td colspan=""7"" class=""cell"" align=""center"">No transactions found for the teller and time period specified.</td></tr>")
				Else
				
					While Not objRS.Eof 
						
						If i > 1 Then
							If objRS("RecCurr") <> strPreviousCurr Then
								blnConsistantCurrency = False
							End If
						End If
						
						If i Mod 2 = 0 Then
							strClass = "cell"
						Else
							strClass = "alt_cell"
						End If
						
						'If CBool(objRS("PayoutFlag")) Then
							'strStatus = "Complete"
						'Else
							'strStatus = "&nbsp;"
						'End If
						
						dblTotal = dblTotal + CDbl(Nz(objRS("RecAmount")))
					
						Response.Write("<tr>")
						Response.Write("<td class="""& strClass &""">"& objRS("IMERef") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:right;"">"& objRS("TDate") &"</td>")
						Response.Write("<td class="""& strClass &""">"& objRS("SendName") &"</td>")
						Response.Write("<td class="""& strClass &""">"& objRS("RecName") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:left;"">"& objRS("PayoutCheckTmStamp") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:left;"">"& objRS("PayoutTmStamp") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:right;"">"& FormatNumber(Nz(objRS("RecAmount")) ,2) &" "& objRS("RecCurr") &"</td>")
						Response.Write("</tr>")
						
						i = i + 1
						strPreviousCurr = objRS("RecCurr")
						
						objRS.MoveNext
					Wend

Open in new window


To include the Country would be adding:
Response.Write("<td class="""& strClass &""">"& objRS("Country") &"</td>")

How does it proportion itself across a screen?
0
Ultimate Tool Kit for Technology Solution Provider

Broken down into practical pointers and step-by-step instructions, the IT Service Excellence Tool Kit delivers expert advice for technology solution providers. Get your free copy now.

 
Nigel Keith-WalkerContractorAuthor Commented:
OK.  So I have changed the stored procedure to include a field : Country.  I have made changes to teller_report2.asp.

How can I trigger off the report?
0
 
Ares KurkluSoftware EngineerCommented:
if you know where the original report is on the website, like

www.mywebsite.com/report/teller_report.asp

all you have to do is go to the page by putting a 2 at the end of the report like:

www.mywebsite.com/report/teller_report2.asp
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Seemed like a great idea.  First I negotiate the logon screen, then I can enter teller_report2.  Within this there is a display button, which sends me back to the original teller_report.

A possibility is to wait till Sunday when no-one is on the system.
0
 
Ares KurkluSoftware EngineerCommented:
Shouldn't matter if there is anyone in the system as long as there is no update in the database,
you can login then navigate to teller_report.asp first, then you should be able to change the browser link to teller_report2.asp

does that redirect you to teller_report.asp ?
0
 
Ares KurkluSoftware EngineerCommented:
Unless if you want to replace teller_report.asp in production and check it there, probably yes it would be ideal if no one was in the system,

 As a good practice, I would also make sure that the original file is safe by copying to something like BKP_teller_report.asp I doubt that there would be any version control.

But what you can do is change the original teller_report.asp to teller_report_OLD.asp then rename teller_report2.asp to teller_report.asp if you want to test directly in the existing location. All depends on how frequently the file is accessed.
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Yep.  Standard practice for always retaining the original.  Just in case we need to revert to it.

Thanks for your help.
0
 
Ares KurkluSoftware EngineerCommented:
Not a problem. Any time.
0
 
Nigel Keith-WalkerContractorAuthor Commented:
I was able to use UltraEdit for the FTP access to the website and to use as a text editor.  It highlights keywords in different colours, making it easier to read.  I had expected to learn how to use a tool specifically designed for web development.  But for a simple change to a report this has been an easier option.
0
 
Ares KurkluSoftware EngineerCommented:
Notepad++ is good for editing and small changes, it highlights as well and it's free, but out of the box it doesn't have FTP, may be possible with some plugin which I have never tried,
WinSCP or Filezilla can be used for FTP separately too. ASP is too old now, with modern Microsoft languages Visual Studio will be the way to go.
0
 
Wayne BarronAuthor, Web DeveloperCommented:
I am not certain why any of the other experts did not suggest this.
So, I am going to chime in here.

The coding is OLD, and with that said, it is using what is not considered to be industry standards in coding.
The code below is HOW your code SHOULD be presented.
This allows for you, and everyone else that comes after you, to easily manipulate and edit the code as needed.

It is a little time consuming to edit the existing code to look like this, However. It will allow for faster troubleshooting and for quicker modifications to the code.

You "Should" be able to take the following code, and run it inside of your project, without many modifications.
The below code will also look good inside of Adobe Dreamweaver and Visual Studio as well as other visual editors.
Good Luck.
Wayne
<table>
  <%
				If objRS.Eof Then%>
  <tr>
    <td colspan="7" class="cell" align="center">No transactions found for the teller and time period specified.</td>
  </tr>
  <%Else
				
					While Not objRS.Eof 
						
						If i > 1 Then
							If objRS("RecCurr") <> strPreviousCurr Then
								blnConsistantCurrency = False
							End If
						End If
						
						If i Mod 2 = 0 Then
							strClass = "cell"
						Else
							strClass = "alt_cell"
						End If
						
						'If CBool(objRS("PayoutFlag")) Then
							'strStatus = "Complete"
						'Else
							'strStatus = "&nbsp;"
						'End If
						
						dblTotal = dblTotal + CDbl(Nz(objRS("RecAmount")))%>
  <tr>
    <td class="<%=strClass%>"><%=objRS("IMERef")%></td>
    <td class="<%=strClass%>" style="text-align:right;"><%=objRS("TDate")%></td>
    <td class="<%=strClass%>"><%=objRS("SendName")%></td>
    <td class="<%=strClass%>"><%=objRS("RecName")%></td>
    <td class="<%=strClass%>" style="text-align:left;"><%=objRS("PayoutCheckTmStamp")%></td>
    <td class="<%=strClass%>" style="text-align:left;"><%=objRS("PayoutTmStamp")%></td>
    <td class="<%=strClass%>" style="text-align:right;"><%=FormatNumber(Nz(objRS("RecAmount")) ,2)%><%=objRS("RecCurr")%></td>
  </tr>
  <%i = i + 1
						strPreviousCurr = objRS("RecCurr")
						
						objRS.MoveNext
					Wend
%>
</table>

Open in new window

0
 
Nigel Keith-WalkerContractorAuthor Commented:
Thanks for the suggestion that the coding is old and should be refreshed.  Since this is a slight amendment to just one of the scripts, I will be following the format of the original programmer.
However I have commenced watching some Channel 9 talks on using Visual studio with code analysers.  Is this the best way to improve the coding?
0
 
Ares KurkluSoftware EngineerCommented:
Unfortunately, Visual Studio can't do anything about ASP code, the only use of VS for ASP code would be highlighting/ coloring the tags and words. It will actually be a waste of memory to use VS to edit ASP code. VS is very powerful when you use the new tech and code in .NET

By the way, I wouldn't be worrying about how the code is I have been through code which looks exactly like that a lot.
My biggest suggestion would be not to change the code.
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Can anyone identify the favour of C from the code sample?  Is it C# or C++?
0
 
Ares KurkluSoftware EngineerCommented:
Which code sample?
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Looking again at the report code again, I see that it refers to javascript.  Perhaps this was written in java.

See new code sample.
<!--#include file="includes/general.asp"-->
<!--#include file="includes/authentication_required.asp"-->
<%
blnIsPostBack = CBool(Request.Form("IsPostBack"))

Set objConn = New DataConn

If blnIsPostBack Then

	dteFrom = Trim(Request.Form("txtFrom"))
	dteTo = Trim(Request.Form("txtTo"))
	TellerID = Request.Form("selTeller")
		
	' Get the teller's name
	Set objRS = objConn.Execute("web_select_user_by_id '"& TellerID &"'")
	
	If Not objRS.Eof Then
		strTellerName = objRS("Firstname") &" "& objRS("Lastname")
	End If
Else
	dteFrom = FormatDateTime(Date(), 2)
	dteTo = dteFrom
End If
%>
<!DOCTYPE html PUBLIC "-//W3C//DTD XHTML 1.0 Transitional//EN" "http://www.w3.org/TR/xhtml1/DTD/xhtml1-transitional.dtd">
<html xmlns="http://www.w3.org/1999/xhtml">
<head>
<title>IMEXFX Teller Report</title>
<meta http-equiv="Content-Type" content="text/html; charset=utf-8" />
<link rel="stylesheet" type="text/css" href="imexfx.css" />
<script type="text/javascript" src="scripts/general.js"></script>
<script type="text/javascript" src="scripts/timeout.js"></script>
<script type="text/javascript">
function DisplayReport(){
	var intErrors = 0;
	var strErrors = "The report could not be displayed for the following reason(s):\n";
	
	if(!IsDate(trim(document.frm.txtFrom.value))){
		intErrors++;
		strErrors += "Please enter a valid 'From' date in dd/mm/yyyy format.\n";
	}
	
	if(!IsDate(trim(document.frm.txtTo.value))){
		intErrors++;
		strErrors += "Please enter a valid 'To' date in dd/mm/yyyy format.\n";
	}

	if(intErrors == 0){	
		document.frm.IsPostBack.value = "1";
		document.frm.submit();
	} else {
		alert(strErrors);
	}
}
</script>
</head>

<body>
<div id="container">
	<div id="header"><!--#include file="includes/header.asp"--></div>
	<div id="navigation"><!--#include file="includes/navigation.asp"--></div>
	<div id="content">
		<h1>Teller Transaction Report</h1>
		<form name="frm" method="post" action="teller_report.asp">
		<input type="hidden" name="IsPostBack" />
		<table align="center" cellpadding="1" cellspacing="1" style="background-color:#666666;">
			<tr>
				<%
				If Session("Level") = "A" Or Session("Level") = "D" Or Session("Level") = "S" Then
					Response.Write("<th>Teller</th>")
				End If
				%>
				<th>From</th>
				<th>To</th>
				<th>Display Report</th>
			</tr>
			<tr>
				<%
				i = 0
				
				If Session("Level") = "T" Then
				
					Response.Write("<input type=""hidden"" name=""selTeller"" value="""& Session("UserID") &""" />")
					
				Else
				
					Response.Write("<td class=""cell""><select name=""selTeller"">")
					
					Set objRS = objConn.Execute("web_select_tellers '"& Session("Level") &"', '"& Session("Paycode") &"'")
					
					While Not objRS.Eof
						
						Response.Write("<option value="""& objRS("Userid") &"""")
						
						If CStr(strTellerID) = CStr(objRS("Userid")) Then
							Response.Write(" selected=""selected""")
						End If
						
						Response.Write(">"& UCase(objRS("Lastname")) &", "& objRS("Firstname"))
						If Not CBool(objRS("Status")) Then
							Response.Write(" [Inactive]")
						End If
						Response.Write("</option>")
	
						objRS.MoveNext
					Wend			
							
					objRS.Close
					Set objRS = Nothing
					
					Response.Write("</select></td>")
					
				End If
				%>
				<td class="cell"><input type="text" name="txtFrom" size="8" maxlength="12" value="<%= dteFrom %>" /></td>
				<td class="cell"><input type="text" name="txtTo" size="8" maxlength="12" value="<%= dteTo %>" /></td>
				<td class="cell"><input type="button" value="Display Report" onClick="DisplayReport();" /></td>
			</tr>
			<tr>
				<% 
				If Session("Level") = "A" Or Session("Level") = "D" Or Session("Level") = "S" Then 
					Response.Write("<td class=""footer_cell"">&nbsp;</td>") 
				End If
				%>
				<td class="footer_cell" colspan="2" align="center">(dd/mm/yyyy)</td>
				<td class="footer_cell">&nbsp;</td>
			</tr>
		</table>
		</form>
		<%
		If blnIsPostBack Then
		%>
			<p><strong>Teller:</strong> <%= strTellerName %><br />
			<strong>Period:</strong> From <%= dteFrom %> to <%= dteTo %></p>
			<table align="center" cellpadding="2" cellspacing="1" bgcolor="#333333">
				<tr>
					<th>TT Number</th>
					<th>Send Date</th>
					<th>Customer Name</th>
					<th>Receiver Name</th>
					<th>Logan Payout Date</th>
					<th>Local Payout Date</th>
					<th>Payout Amount</th>
				</tr>
				<%
				Set objRS = objConn.Execute("web_teller_report '"& TellerID &"', '"& MediumDate(dteFrom) &"', '"& MediumDate(dteTo) &" 23:59:59'")

				dblTotal = 0
				blnConsistantCurrency = True
	
				If objRS.Eof Then
					Response.Write("<tr><td colspan=""7"" class=""cell"" align=""center"">No transactions found for the teller and time period specified.</td></tr>")
				Else
				
					While Not objRS.Eof 
						
						If i > 1 Then
							If objRS("RecCurr") <> strPreviousCurr Then
								blnConsistantCurrency = False
							End If
						End If
						
						If i Mod 2 = 0 Then
							strClass = "cell"
						Else
							strClass = "alt_cell"
						End If
						
						'If CBool(objRS("PayoutFlag")) Then
							'strStatus = "Complete"
						'Else
							'strStatus = "&nbsp;"
						'End If
						
						dblTotal = dblTotal + CDbl(Nz(objRS("RecAmount")))
					
						Response.Write("<tr>")
						Response.Write("<td class="""& strClass &""">"& objRS("IMERef") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:right;"">"& objRS("TDate") &"</td>")
						Response.Write("<td class="""& strClass &""">"& objRS("SendName") &"</td>")
						Response.Write("<td class="""& strClass &""">"& objRS("RecName") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:left;"">"& objRS("PayoutCheckTmStamp") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:left;"">"& objRS("PayoutTmStamp") &"</td>")
						Response.Write("<td class="""& strClass &""" style=""text-align:right;"">"& FormatNumber(Nz(objRS("RecAmount")) ,2) &" "& objRS("RecCurr") &"</td>")
						Response.Write("</tr>")
						
						i = i + 1
						strPreviousCurr = objRS("RecCurr")
						
						objRS.MoveNext
					Wend
					
				End If
				%>
				<tr>
					<th colspan="6" style="text-align:right;">Total:</th>
					<th style="text-align:right;">
					<%
					Response.Write(FormatNumber(dblTotal ,2))
					If blnConsistantCurrency Then
						Response.Write(" "& strPreviousCurr)
					End If
					%></th>
				</tr>
			</table>
		<%	
		End If
		
		Set objConn = Nothing
		%>
		<p>&nbsp;</p>
	</div>
	<div id="footer"><!--#include file="includes/footer.asp"--></div>
</div>
</body>
</html>

Open in new window

0
 
Ares KurkluSoftware EngineerCommented:
No, this code is classic asp, you can also see that from the file name extension, from the syntax also from the top line:
<!--#include file="includes/general.asp"--> as it includes other asp file
But it also includes javascript.

the javascript reference is within the HTML section, they basically all work together. You can use ASP to output HTML code e.g you can display multiple rows of an HTML table, or just simply do all the server side business logic and calculations and database reads etc.

 javascript is executed on the client side, used for DOM manipulation, before submitting the information to the server, you can do things like, gui manipulation/changes, do validation and error handling, e.g. check if email address is properly formed or phone number is numeric etc.
C is more for desktop applications, C++ is not a common web language as well, probably people may call you insane if you try to do web with C/C++.

C# yes as a part of .NET framework you can use it for web dev. Java is also different than JavaScript and Java is not used in web instead there is JSP (Java Server Pages).

Top ones for web are currently PHP and .NET.
0
 
Nigel Keith-WalkerContractorAuthor Commented:
Thanks.  I have been looking at the .ASP files and can see where it is connecting to the server.
0
Question has a verified solution.

Are you are experiencing a similar issue? Get a personalized answer when you ask a related question.

Have a better answer? Share it in a comment.

All Courses

From novice to tech pro — start learning today.