Версия для печати темы
Нажмите сюда для просмотра этой темы в оригинальном формате
Форум программистов > Центр помощи > [C# & MSSQL]Иерархический справочник


Автор: Oxana 12.9.2008, 12:30
Помогите решить задачку. Задачка:

На базе WinForms 2.0 (исключая компоненты 3х лиц) реализовать интерфейс по вводу/редактированию иерархического справочника с неограниченной глубиной вложенности (Код - Наименование - Код родителя)
Используя MS SQL сервер реализовать бизнесс логику по поиску узла из справочника по ряду критериев:
а) поиск по наименованию узла
б) а) + начиная с указанного узла как предка результирующего набора
в) а) + исключительно "висячие" вершины "дерева", т.е. не имеющих потомков

Код вродь написала, но не все правильно работает. Если нужно, то могу выложить код.

Заранее пасиба.

Автор: Oxana 12.9.2008, 13:48
Тогда по частям, по конкретным вопросам))
В чем дело? Переименовывается только когда я переименовываю 2а раза. Т.е. переименовала в "Вася"(в Бд ничё не изменилось), после переименовываю в "Петя", в БД изменяется, но не на "Петя" а на "Вася". и так далее, т.е. изменяется не на последнее изменение,а на предпоследнее. Вот код:

C#:
Код

private void RenameMethod()
        {
            
            
            TreeNode tn = tvwMain.SelectedNode;            
            
            try
            {
                conn.Open();               
                SqlCommand cmd = conn.CreateCommand();
                cmd.CommandText = "RenameProcedure";
                cmd.CommandType = CommandType.StoredProcedure;
                cmd.Parameters.Add("@paramName", SqlDbType.Char, 10);
                cmd.Parameters["@paramName"].Value = tn.Text;
                cmd.Parameters.Add("@paramId", SqlDbType.Char, 10);
                cmd.Parameters["@paramId"].Value = tn.Tag;
                
                cmd.ExecuteNonQuery();
                
                
            }
            catch (Exception ex)
            {
                MessageBox.Show("Ошибка подключения к БД", "Ошибка!");
            }
            finally
            {
                conn.Close();
            }
        }


SQL:
Код

CREATE PROCEDURE RenameProcedure 

@paramId        char(10),
@paramName  char(10)
AS
Update Tree
Set ElementName = @paramName
where ElementId = @paramId
GO

Автор: comtat 12.9.2008, 16:41
Цитата(Oxana @  12.9.2008,  12:30 Найти цитируемый пост)
Код вродь написала, но не все правильно работает. Если нужно, то могу выложить код.

выложи структуры таблиц

Автор: Oxana 12.9.2008, 22:38
БД состоит из одной таблицы:


Tree
ElementId
ElementName
ParentId

Powered by Invision Power Board (http://www.invisionboard.com)
© Invision Power Services (http://www.invisionpower.com)