Link to home
Start Free TrialLog in
Avatar of AJ0424
AJ0424

asked on

Scope Question - "Local Variable Already Defined in Scope"

Hello!

I am new to development of any kind and I have what I think is a scope problem but I do not know how to fix it.  

What I am trying to do:
The page in question (FileUpload.aspx) is a page that allows a user to upload a file to a folder.  I am trying to capture the fileid (scope_identity) and username (of the user logged in) (I have done this).  The next part is to use the username as a parameter for a stored proc that will return the guid for the username value.

After I have both the fileid and the userid (guid), I need to run an insert stored proc that inputs both to a linking table. This table has an id pk, userid, fileid.


Where I am stuck:
I had help in setting this next part up and I really do not yet fully understand everything that is happening here (at least not enough to really trouble shoot).  What I have is another page (ClientFileRepository.aspx) that has a class with several methods for retrieving data from stored procs.  On the original page (FileUpload.aspx) I am using two methods in one "if" block - one is an insert, the other a select.  The build fails and tells me that "A local variable "repository" is already defined in this scope." but if I rename it, it renames it in both instances.

At this point I am in over my head...I thought I needed them together because each returns a value I need to insert into a table.  I am at a loss as to how this should be rewritten so that I can grab both values and insert them into my table.  I assume this will require yet another method which will just complicate the matter further.

Can anyone tell me what I am doing wrong?  Any help would be appreciated!!

Thanks,
AJ
using System;
using System.Data;
using System.Configuration;
using System.Collections;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;  //had to add to connect to sql
 
 
 
 
namespace FileTransfer2
{
    
    public partial class FileUpload : System.Web.UI.Page
    {
        protected void Page_Load(object sender, EventArgs e)
        {
            
        }
 
        protected void lbtnReturntoHome_Click(object sender, EventArgs e)
        {
            Response.Redirect("default.aspx");
        }
 
        
        protected void btnSubmit_Click(object sender, EventArgs e)
        {
            //lblResults.Text = "";
            
            if (FileUpload1.HasFile)
                try
                {
                    string folderPath = ConfigurationManager.AppSettings["UploadDirectory"]; 
                    string filePath = System.IO.Path.Combine(folderPath, FileUpload1.FileName); //concatenates path + file name
                    FileUpload1.SaveAs(filePath); 
 
                    lblResults.Text = "File Successfully Uploaded: <br>" + "File name: " +
                        FileUpload1.FileName + "<br>" + 
                        FileUpload1.PostedFile.ContentLength + " kb<br>" +
                        "Content type: " +
                        FileUpload1.PostedFile.ContentType;
 
                    ClientFileRepository repository = new ClientFileRepository();
                    int fileid = repository.InsertNewFile(FileUpload1.FileName, txtDescription.Text, filePath);
                    string UserName = User.Identity.Name;
 
 
                    //This is where I am having a problem
                    ClientFileRepository repository = new ClientFileRepository();
                    DataTable UserGuid = repository.GetUserGuid(UserName);
                    if (UserGuid != null && UserGuid.Rows.Count > 0)
                    {
                        string UserID = UserGuid.Rows[0]["UserId"].ToString();
                        Response.Write(UserID);
                    }
 
                    else
                    {
                        Response.Write("No userid found.");
                    }
 
 
                    lblError.Text = "";
 
                    
                }
                
                catch (Exception ex) //this should catch if jibberish is entered but it doesn't
                {
                    //lblError.Text = "Error: File was not found.";
                    Response.Write("Error: " + ex.Message);
                }
            else
            {
                txtDescription.Text = "";
                lblResults.Text = "";
                lblError.Text = "You have not specified a file.";
            }
 
                        
        }
    }
}
 
 
 
using System;
using System.Data;
using System.Configuration;
using System.Web;
using System.Web.Security;
using System.Web.UI;
using System.Web.UI.WebControls;
using System.Web.UI.WebControls.WebParts;
using System.Web.UI.HtmlControls;
using System.Data.SqlClient;
 
namespace FileTransfer2
{
    public class ClientFileRepository
    {
 
        public int InsertNewFile(string fileName, string description, string clientfile)
        {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["FileTransferConnectionString"].ToString()))
            {
                using (SqlCommand cmd = new SqlCommand("InsertNewFile", conn)) //stored proc name
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@FileName", fileName);
                    cmd.Parameters.AddWithValue("@Description", description);
                    cmd.Parameters.AddWithValue("@ClientFile", clientfile);
                    conn.Open();
                    return int.Parse(cmd.ExecuteScalar().ToString()); //returns scope_identity from proc
                }
            }
        }
 
 
        public DataTable GetFileInfo(int id)
        {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["FileTransferConnectionString"].ToString()))
            {   
                using (SqlCommand cmd = new SqlCommand("getFilebyFileID", conn)) //stored proc name
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@Id", id);
 
                    SqlDataAdapter daFilesbyId = new SqlDataAdapter(cmd);
                    DataTable FilesbyId = new DataTable();
                    conn.Open();
                    daFilesbyId.Fill(FilesbyId);
                    return FilesbyId;
                }
            }
        }
 
        public DataTable GetUserGuid(string UserName)
        {
            using (SqlConnection conn = new SqlConnection(ConfigurationManager.ConnectionStrings["FileTransferConnectionString"].ToString()))
            {
                using (SqlCommand cmd = new SqlCommand("getUserID", conn))
                {
                    cmd.CommandType = CommandType.StoredProcedure;
                    cmd.Parameters.AddWithValue("@UserName", UserName);
 
                    SqlDataAdapter daGetUserGuid = new SqlDataAdapter(cmd);
                    DataTable UserGuid = new DataTable();
                    conn.Open();
                    daGetUserGuid.Fill(UserGuid);
                    return UserGuid;
                }
            }
        }
 
 
        
    }
}
 
 
SQL:
 
ALTER proc [dbo].[getUserID]
	@UserName nvarchar(256)
 
AS
 
select
	u.UserId
 
from aspnet_Users u
where u.UserName = @UserName

Open in new window

Avatar of CyrexCore2k
CyrexCore2k
Flag of United States of America image

Change

ClientFileRepository repository = new ClientFileRepository();

to

repository = new ClientFileRepository();
SOLUTION
Avatar of Gyanendra Singh
Gyanendra Singh
Flag of India image

Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
ASKER CERTIFIED SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
SOLUTION
Link to home
membership
This solution is only available to members.
To access this solution, you must be a member of Experts Exchange.
Start Free Trial
Avatar of AJ0424
AJ0424

ASKER

Thanks everyone!  That worked perfectly and now I have a better understanding of what that code is actually doing!

I appreciate it!!
AJ
Avatar of AJ0424

ASKER

Thank you all very much - I hope you don't mind, I split the points since you all helped me.

CuteBug, I especially appreciate the explanation behind your answer - it cleared up a bit of the mystery for me!

Thanks,
AJ