[Last Call] Learn how to a build a cloud-first strategyRegister Now

x
?
Solved

Query not updating selected Table in Sql database

Posted on 2011-10-18
4
Medium Priority
?
306 Views
Last Modified: 2013-12-16
When editing a selected table record it does not update the sql database.
I have attached a screen image and complete code for clarity.
Thanks in advance for any help given.

I am getting the following messages:
successLabel:Data Source=dinosaur1;Integrated Security=false;User ID=sa;Password=h6web97;Initial Catalog=AdminDB2;
connectionTable:Select * from adminTable

ErrorLabel3:236:Data Source=dinosaur1;Integrated Security=false;User ID=sa;Password=h6web97;Initial Catalog=AdminDB2;
connectionTable:Select * from adminTable

Query:Update adminTable set rec_ID=3, Server_Name='Data Source=dinosaur1;Integrated Security=False;User ID=sa;Password=h6web97; Initial Catalog=pubs;', Table_Name='Comments3' where rec_ID = 3

System.Data.SqlClient.SqlException: Cannot update identity column 'rec_ID'. at System.Data.SqlClient.SqlConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.SqlInternalConnection.OnError(SqlException exception, Boolean breakConnection) at System.Data.SqlClient.TdsParser.ThrowExceptionAndWarning(TdsParserStateObject stateObj) at System.Data.SqlClient.TdsParser.Run(RunBehavior runBehavior, SqlCommand cmdHandler, SqlDataReader dataStream, BulkCopySimpleResultSet bulkCopyHandler, TdsParserStateObject stateObj) at System.Data.SqlClient.SqlCommand.RunExecuteNonQueryTds(String methodName, Boolean async) at System.Data.SqlClient.SqlCommand.InternalExecuteNonQuery(DbAsyncResult result, String methodName, Boolean sendToPipe) at System.Data.SqlClient.SqlCommand.ExecuteNonQuery() at _Default.TableGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e) in c:\Projects\sqlDataGridDev\sqlDataGridData\Default.aspx.cs:line 228
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.Collections.Specialized;
using System.Data.SqlClient;
using System.Data.OleDb;

public class DynamicallyTemplatedGridViewHandler40 : ITemplate
{
    #region data memebers
    ListItemType ItemType;
    string FieldName;
    string InfoType;
    #endregion

    #region constructor
    public DynamicallyTemplatedGridViewHandler40(ListItemType item_type, string field_name, string info_type)
    {
        ItemType = item_type;
        FieldName = field_name;
        InfoType = info_type;
    }
    #endregion

    #region Methods
    public void InstantiateIn(System.Web.UI.Control Container)
    {
        switch (ItemType)
        {
            case ListItemType.Header:
                Literal header_ltrl = new Literal();
                header_ltrl.Text = "<b>" + FieldName + "</b>";
                Container.Controls.Add(header_ltrl);
                break;
            case ListItemType.Item:
                switch (InfoType)
                {
                    case "Command":
                        ImageButton edit_button = new ImageButton();
                        edit_button.ID = "edit_button";
                        edit_button.ImageUrl = "~/images/edit.gif";
                        edit_button.CommandName = "Edit";
                        edit_button.Click += new ImageClickEventHandler(edit_button_Click);
                        edit_button.ToolTip = "Edit";
                        Container.Controls.Add(edit_button);
                        ImageButton delete_button = new ImageButton();
                        delete_button.ID = "delete_button";
                        delete_button.ImageUrl = "~/images/delete.gif";
                        delete_button.CommandName = "Delete";
                        delete_button.ToolTip = "Delete";
                        delete_button.OnClientClick = "return confirm('Are you sure to delete the record?')";
                        Container.Controls.Add(delete_button);
                        /* Similarly add button for insert.
                         * It is important to know when 'insert' button is added 
                         * its CommandName is set to "Edit"  like that of 'edit' button 
                         * only because we want the GridView enter into Edit mode, 
                         * and this time we also want the text boxes for corresponding fields empty*/
                        ImageButton insert_button = new ImageButton();
                        insert_button.ID = "insert_button";
                        insert_button.ImageUrl = "~/images/insert.bmp";
                        insert_button.CommandName = "Edit";
                        insert_button.ToolTip = "Insert";
                        insert_button.Click += new ImageClickEventHandler(insert_button_Click);
                        Container.Controls.Add(insert_button);
                        break;
                    default:
                        Label field_lbl = new Label();
                        field_lbl.ID = FieldName;
                        field_lbl.Text = String.Empty; //we will bind it later through 'OnDataBinding' event
                        field_lbl.DataBinding += new EventHandler(OnDataBinding);
                        Container.Controls.Add(field_lbl);
                        break;
                }
                break;
            case ListItemType.EditItem:
                if (InfoType == "Command")
                {
                    ImageButton update_button = new ImageButton();
                    update_button.ID = "update_button";
                    update_button.CommandName = "Update";
                    update_button.ImageUrl = "~/images/update.gif";
                    if ((int)new Page().Session["InsertFlag"] == 1)
                        update_button.ToolTip = "Add";
                    else
                        update_button.ToolTip = "Update";
                    update_button.OnClientClick = "return confirm('Are you sure to update the record?')";
                    Container.Controls.Add(update_button);
                    ImageButton cancel_button = new ImageButton();
                    cancel_button.ImageUrl = "~/images/cancel.gif";
                    cancel_button.ID = "cancel_button";
                    cancel_button.CommandName = "Cancel";
                    cancel_button.ToolTip = "Cancel";
                    Container.Controls.Add(cancel_button);
                }
                else// for other 'non-command' i.e. the key and non key fields, bind textboxes with corresponding field values
                {
                    TextBox field_txtbox = new TextBox();
                    field_txtbox.ID = FieldName;
                    field_txtbox.Text = String.Empty;
                    // if Inert is intended no need to bind it with text..keep them empty
                    if ((int)new Page().Session["InsertFlag"] == 0)
                        field_txtbox.DataBinding += new EventHandler(OnDataBinding);
                    Container.Controls.Add(field_txtbox);
                }
                break;
        }
    }
    #endregion

    #region Event Handlers
    //just sets the insert flag ON so that we ll be able to decide in OnRowUpdating event whether to insert or update
    protected void insert_button_Click(Object sender, EventArgs e)
    {
        new Page().Session["InsertFlag"] = 1;
    }
    //just sets the insert flag OFF so that we ll be able to decide in OnRowUpdating event whether to insert or update 
    protected void edit_button_Click(Object sender, EventArgs e)
    {
        new Page().Session["InsertFlag"] = 0;
    }
    private void OnDataBinding(object sender, EventArgs e)
    {
        object bound_value_obj = null;
        Control ctrl = (Control)sender;
        IDataItemContainer data_item_container = (IDataItemContainer)ctrl.NamingContainer;
        bound_value_obj = DataBinder.Eval(data_item_container.DataItem, FieldName);
        switch (ItemType)
        {
            case ListItemType.Item:
                Label field_ltrl = (Label)sender;
                field_ltrl.Text = bound_value_obj.ToString();
                break;
            case ListItemType.EditItem:
                TextBox field_txtbox = (TextBox)sender;
                field_txtbox.Text = bound_value_obj.ToString();
                break;
        }
    }
    #endregion
}
public partial class _Default : System.Web.UI.Page
{
    #region Data members
    public static DataTable sqlTable = new DataTable();
    ArrayList ParameterArray = new ArrayList();
    private string connectionString;
    private String connectionTable;
    #endregion

    #region Events Handlers
    protected void Page_Load(object sender, EventArgs e)
    {
        if (IsPostBack && (bool)Session["IsConnectionInfoSet"]==true)
            CreateTemplatedGridView();
    }
    public void TableGridView_RowEditing(object sender, GridViewEditEventArgs e)
    {
        TableGridView.EditIndex = e.NewEditIndex;
        TableGridView.DataBind();
        Session["SelecetdRowIndex"] = e.NewEditIndex;
    }
    public void TableGridView_RowCancelingEdit(object sender, GridViewCancelEditEventArgs e)
    {
        TableGridView.EditIndex = -1;
        TableGridView.DataBind();
        Session["SelecetdRowIndex"] = -1;
    }
    protected void TableGridView_RowDeleting(object sender, GridViewDeleteEventArgs e)
    {
        string ServerName = (string)Session["Server"];
        string UserName = (string)Session["UserName"];
        string Password = (string)Session["Password"];
        string DatabaseName = (string)Session["DatabaseSelected"];
        //SqlConnection Connection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Initial Catalog=" + DatabaseName + ";User ID=" + UserName + ";Password=" + Password + ";Integrated Security=True; Connect Timeout=120");
        //SqlConnection Connection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + "; Connect Timeout=120;");
        connectionString = "Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + ";";
        SqlConnection Connection = new System.Data.SqlClient.SqlConnection(connectionString);
        string Query = GenerateDeleteQuery(e.RowIndex);
        SqlCommand Command = new System.Data.SqlClient.SqlCommand(Query, Connection);
        try
        {
            if (Connection.State == ConnectionState.Closed)
                Connection.Open();
            Command.ExecuteNonQuery();
        }
        catch (SqlException se)
        {
            msg_lbl.Text = se.ToString();
            MsgPanel.Visible = true;
            Connection.Close();
            ErrorLabel3.Text = "ErrorLabel3:198:" + connectionString + "<br/>connectionTable:" + connectionTable + "<br/>Query:" + Query;
        }
        CreateTemplatedGridView();
    }
    public void TableGridView_RowUpdating(Object sender, GridViewUpdateEventArgs e)
    {
        string ServerName = (string)Session["Server"];
        string UserName = (string)Session["UserName"];
        string Password = (string)Session["Password"];
        string DatabaseName = (string)Session["DatabaseSelected"];
        //SqlConnection Connection = new SqlConnection("Data Source=" + ServerName + ";Initial Catalog=" + DatabaseName + ";User ID=" + UserName + ";Password=" + Password + ";Integrated Security=True; Connect Timeout=120");
        //SqlConnection Connection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + "; Connect Timeout=120;");
        connectionString = "Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + ";";
        SqlConnection Connection = new System.Data.SqlClient.SqlConnection(connectionString);
        GridViewRow row = TableGridView.Rows[e.RowIndex];
        for (int i = 0; i < sqlTable.Columns.Count; i++)
        {
            string field_value = ((TextBox)row.FindControl(sqlTable.Columns[i].ColumnName)).Text;
            ParameterArray.Add(field_value);
        }
        string Query = "";
        if ((int)Session["InsertFlag"] == 1)
            Query = GenerateInsertQuery();
        else
            Query = GenerateUpdateQuery();
        SqlCommand Command = new System.Data.SqlClient.SqlCommand(Query, Connection);
        try
        {
            if (Connection.State == ConnectionState.Closed)
                Connection.Open();
            Command.ExecuteNonQuery();
            Session["InsertFlag"] = (int)Session["InsertFlag"] == 1 ? 0 : 1;
        }
        catch (SqlException se)
        {
            msg_lbl.Text = se.ToString();
            MsgPanel.Visible = true;
            Connection.Close();
            ErrorLabel3.Text = "ErrorLabel3:236:" + connectionString + "<br/>connectionTable:" + connectionTable + "<br/>Query:" + Query;
        }
        TableGridView.EditIndex = -1;
        CreateTemplatedGridView();
    }
    protected void TableGridView_PageIndexChanging(object sender, GridViewPageEventArgs e)
    {
        CreateTemplatedGridView();
        TableGridView.PageIndex = e.NewPageIndex;
        TableGridView.DataBind();
    }
    protected void msg_button_Click(object sender, EventArgs e)
    {
        MsgPanel.Visible = false;
    }
    protected void btnConnect_Click(object sender, EventArgs e)
    {
        msg_lbl.Text = "";
        ErrorLabel3.Text = "";
        successLabel.Text = "";
        if (server_tb.Text == "")
        {
            server_tb.Text = System.Net.Dns.GetHostName();
        }
        if (user_tb.Text == "")
        {
            user_tb.Text = "sa";
        }
        if (pswrd_tb.Text == "")
        {
            pswrd_tb.Text = "h6web97";
        }
        if (database_tb.Text == "")
        {
            database_tb.Text = "AdminDB2";
        }
        if (table_tb.Text == "")
        {
            table_tb.Text = "adminTable";
        }
        Session["Server"] = server_tb.Text;
        Session["UserName"] = user_tb.Text;
        Session["Password"] = pswrd_tb.Text;
        Session["DatabaseSelected"] = database_tb.Text;
        Session["TableSelected"] = table_tb.Text;
        Session["IsConnectionInfoSet"] = true;
        CreateTemplatedGridView();
    }
    #endregion

    #region Methods
    void PopulateDataTable()
    {
        sqlTable = new DataTable();
        TableGridView.Columns.Clear();
        string ServerName = (string)Session["Server"];
        string UserName = (string)Session["UserName"];
        string Password = (string)Session["Password"];
        string DatabaseName = (string)Session["DatabaseSelected"];
        string TableName = (string)Session["TableSelected"];
        //SqlConnection Connection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Initial Catalog=" + DatabaseName + ";User ID=" + UserName + ";Password=" + Password + ";Integrated Security=True; Connect Timeout=120;");
        //SqlConnection Connection = new System.Data.SqlClient.SqlConnection("Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + "; Connect Timeout=120;");
        connectionString = "Data Source=" + ServerName + ";Integrated Security=false;User ID=" + UserName + ";Password=" + Password + ";Initial Catalog=" + DatabaseName + ";";
        SqlConnection Connection = new System.Data.SqlClient.SqlConnection(connectionString);
        connectionTable = "Select * from " + TableName;
        SqlDataAdapter adapter = new SqlDataAdapter(connectionTable, Connection);
        try
        {
            adapter.Fill(sqlTable);
            successLabel.Text = "successLabel:" + connectionString + "<br/>connectionTable:" + connectionTable;
        }
        catch (Exception ex)
        {
            msg_lbl.Text = ex.ToString();
            MsgPanel.Visible = true;
            Connection.Close();
            ErrorLabel3.Text = "ErrorLabel3:312:" + connectionString + "<br/>connectionTable:" + connectionTable;
        }
    }
    void CreateTemplatedGridView()
    {
        // fill the table which is to bound to the GridView
        PopulateDataTable();
        // add templated fields to the GridView
        TemplateField BtnTmpField = new TemplateField();
        BtnTmpField.ItemTemplate =
            new DynamicallyTemplatedGridViewHandler40(ListItemType.Item, "...", "Command");
        BtnTmpField.HeaderTemplate =
            new DynamicallyTemplatedGridViewHandler40(ListItemType.Header, "...", "Command");
        BtnTmpField.EditItemTemplate =
            new DynamicallyTemplatedGridViewHandler40(ListItemType.EditItem, "...", "Command");
        TableGridView.Columns.Add(BtnTmpField);
        for (int i = 0; i < sqlTable.Columns.Count; i++)
        {
            TemplateField ItemTmpField = new TemplateField();
            // create HeaderTemplate
            ItemTmpField.HeaderTemplate = new DynamicallyTemplatedGridViewHandler40(ListItemType.Header,
                                                          sqlTable.Columns[i].ColumnName,
                                                          sqlTable.Columns[i].DataType.Name);
            // create ItemTemplate
            ItemTmpField.ItemTemplate = new DynamicallyTemplatedGridViewHandler40(ListItemType.Item,
                                                          sqlTable.Columns[i].ColumnName,
                                                          sqlTable.Columns[i].DataType.Name);
            //create EditItemTemplate
            ItemTmpField.EditItemTemplate = new DynamicallyTemplatedGridViewHandler40(ListItemType.EditItem,
                                                          sqlTable.Columns[i].ColumnName,
                                                          sqlTable.Columns[i].DataType.Name);
            // then add to the GridView
            TableGridView.Columns.Add(ItemTmpField);
        }
        // bind and display the data
        TableGridView.DataSource = sqlTable;
        TableGridView.DataBind();
    }
    string GenerateUpdateQuery()
    {
        int i = 0;
        string tempstr = "";
        int temp_index = -1;
        string TableName = (string)Session["TableSelected"];
        string Query = "";
        Query = "Update  " + TableName + " set ";
        for (i = 0; i < sqlTable.Columns.Count; i++)
        {
            switch (sqlTable.Columns[i].DataType.Name)
            {
                case "Boolean":
                case "Int32":
                case "Byte":
                case "Decimal":
                    if ((string)ParameterArray[i] == "True")
                        ParameterArray[i] = "1";
                    else if ((string)ParameterArray[i] == "False")
                        ParameterArray[i] = "0";
                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + sqlTable.Columns[i].ColumnName + "=" + ParameterArray[i];
                    else
                        Query = Query + sqlTable.Columns[i].ColumnName + "=" + ParameterArray[i] + ", ";
                    break;
                case "String":
                case "DateTime":
                    if (((string)ParameterArray[i]).Contains("'"))
                    {
                        tempstr = ((string)ParameterArray[i]);
                        ParameterArray[i] = ((string)ParameterArray[i]).Replace("'", "''");
                        temp_index = i;
                    }
                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + sqlTable.Columns[i].ColumnName + "='" + ParameterArray[i] + "' ";
                    else
                        Query = Query + sqlTable.Columns[i].ColumnName + "='" + ParameterArray[i] + "', ";
                    break;
            }
        }
        if (temp_index > -1)
            ParameterArray[temp_index] = tempstr;
       if (sqlTable.Columns[0].DataType.Name == "String" || sqlTable.Columns[0].DataType.Name == "DateTime")
            Query = Query + " where " + sqlTable.Columns[0].ColumnName + " = '" + ParameterArray[0] + "'";
        else
            Query = Query + " where " + sqlTable.Columns[0].ColumnName + " = " + ParameterArray[0];
        return Query;
    }
    string GenerateInsertQuery()
    {
        int i = 0;
        string tempstr = "";
        int temp_index = -1;
        string TableName = (string)Session["TableSelected"];
        string Query = "";
        Query = "Insert into  " + TableName + "(";
        for (i = 0; i < sqlTable.Columns.Count; i++)
        {
            if (i == sqlTable.Columns.Count - 1)
                Query = Query + sqlTable.Columns[i].ColumnName;
            else
                Query = Query + sqlTable.Columns[i].ColumnName + ", ";
        }
        Query = Query + ")" + "Values (";
        for (i = 0; i < sqlTable.Columns.Count; i++)
        {
            switch (sqlTable.Columns[i].DataType.Name)
            {
                case "Boolean":
                case "Int32":
                case "Byte":
                case "Decimal":
                    if ((string)ParameterArray[i] == "True")
                        ParameterArray[i] = "1";
                    else if ((string)ParameterArray[i] == "False")
                        ParameterArray[i] = "0";

                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + ParameterArray[i];
                    else
                        Query = Query + ParameterArray[i] + ", ";
                    break;
                case "String":
                case "DateTime":
                    if (((string)ParameterArray[i]).Contains("'"))
                    {
                        tempstr = ((string)ParameterArray[i]);
                        ParameterArray[i] = ((string)ParameterArray[i]).Replace("'", "''");
                        temp_index = i;
                    }
                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + "'" + ParameterArray[i] + "' ";
                    else
                        Query = Query + "'" + ParameterArray[i] + "', ";
                    break;
            }
        }
        Query = Query + ")";
        return Query;
    }
    string GenerateDeleteQuery(int index)
    {
        string TableName = (string)Session["TableSelected"];
        string query = "";
        if (sqlTable.Columns[0].DataType.Name == "String" || sqlTable.Columns[0].DataType.Name == "DateTime")
            query = "Delete from " + TableName + " where " + sqlTable.Columns[0].ColumnName + "='" + sqlTable.Rows[index][0].ToString() + "'";
        else
            query = "Delete from " + TableName + " where " + sqlTable.Columns[0].ColumnName + "=" + sqlTable.Rows[index][0].ToString();
        return query;
    }
    
    #endregion
}

Open in new window

CaptureWiz078.jpg
0
Comment
Question by:homeshopper
  • 3
4 Comments
 
LVL 39

Accepted Solution

by:
Pratima Pharande earned 2000 total points
ID: 36985502
change update query like this

you can not update identity column


Update adminTable set
 Server_Name='Data Source=dinosaur1;Integrated Security=False;User ID=sa;Password=h6web97; Initial Catalog=pubs;', Table_Name='Comments3' where rec_ID = 3
0
 

Author Comment

by:homeshopper
ID: 36986020
Thanks, it now works.
I deleted identity column, set rec_ID=3 by making the following changes:
Query = Query; in lines 371 & 373
0
 

Author Comment

by:homeshopper
ID: 36986112
I now have an error when inserting into database.
ErrorLabel3:236:Data Source=dinosaur1;Integrated Security=false;User ID=sa;Password=h6web97;Initial Catalog=AdminDB2;
connectionTable:Select * from adminTable
Query:Insert into adminTable(rec_ID, Server_Name, Table_Name)Values (4, 'aa', 'bb' )
The code is as attached snippet.
Thanks again for any help given.
string GenerateInsertQuery()
    {
        int i = 0;
        string tempstr = "";
        int temp_index = -1;
        string TableName = (string)Session["TableSelected"];
        string Query = "";
        Query = "Insert into  " + TableName + "(";
        for (i = 0; i < sqlTable.Columns.Count; i++)
        {
            if (i == sqlTable.Columns.Count - 1)
                Query = Query + sqlTable.Columns[i].ColumnName;
            else
                Query = Query + sqlTable.Columns[i].ColumnName + ", ";
        }
        Query = Query + ")" + "Values (";
        for (i = 0; i < sqlTable.Columns.Count; i++)
        {
            switch (sqlTable.Columns[i].DataType.Name)
            {
                case "Boolean":
                case "Int32":
                case "Byte":
                case "Decimal":
                    if ((string)ParameterArray[i] == "True")
                        ParameterArray[i] = "1";
                    else if ((string)ParameterArray[i] == "False")
                        ParameterArray[i] = "0";

                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + ParameterArray[i];
                    else
                        Query = Query + ParameterArray[i] + ", ";
                    break;
                case "String":
                case "DateTime":
                    if (((string)ParameterArray[i]).Contains("'"))
                    {
                        tempstr = ((string)ParameterArray[i]);
                        ParameterArray[i] = ((string)ParameterArray[i]).Replace("'", "''");
                        temp_index = i;
                    }
                    if (i == sqlTable.Columns.Count - 1)
                        Query = Query + "'" + ParameterArray[i] + "' ";
                    else
                        Query = Query + "'" + ParameterArray[i] + "', ";
                    break;
            }
        }
        Query = Query + ")";
        return Query;
    }

Open in new window

0
 

Author Comment

by:homeshopper
ID: 36986261
managed to fix it, similar problem as before.
deleted reference to rec_id being identity column
changed  for (i = 0; i < sqlTable.Columns.Count; i++)
to  for (i = 1; i < sqlTable.Columns.Count; i++)
0

Featured Post

Nothing ever in the clear!

This technical paper will help you implement VMware’s VM encryption as well as implement Veeam encryption which together will achieve the nothing ever in the clear goal. If a bad guy steals VMs, backups or traffic they get nothing.

Question has a verified solution.

If you are experiencing a similar issue, please ask a related question

It was really hard time for me to get the understanding of Delegates in C#. I went through many websites and articles but I found them very clumsy. After going through those sites, I noted down the points in a easy way so here I am sharing that unde…
This article shows how to deploy dynamic backgrounds to computers depending on the aspect ratio of display
Please read the paragraph below before following the instructions in the video — there are important caveats in the paragraph that I did not mention in the video. If your PaperPort 12 or PaperPort 14 is failing to start, or crashing, or hanging, …
With just a little bit of  SQL and VBA, many doors open to cool things like synchronize a list box to display data relevant to other information on a form.  If you have never written code or looked at an SQL statement before, no problem! ...  give i…
Suggested Courses

830 members asked questions and received personalized solutions in the past 7 days.

Join the community of 500,000 technology professionals and ask your questions.

Join & Ask a Question