На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Delete строки из таблици , не выходит удалить:(
    Привет всем.. Вот на старом проекте код этот работал без проблем, а тут хоть убейся не хочет:( Мож ктото объяснит в чем же дело? Первый проект использовал за БД Аксесс, а данный проект МсСкуль 2005...

    ExpandedWrap disabled
      string con_str = "Data Source=SERVER;Initial Catalog=AlexShop;Integrated Security=True";
                  SqlConnection oc = new SqlConnection(con_str);
                  oc.Open();
                  string mySQLStr;
                  mySQLStr = "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));";
                  SqlCommand comm = new SqlCommand(mySQLStr, oc);
                  SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult);
                  myReader.Read();
                  if ((int)myReader[0] != 0)
                  {
                      if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK)
                      {
                          mySQLStr = "DELETE *FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));";
                          comm = new SqlCommand(mySQLStr, oc);
                          comm.ExecuteScalar();
                      }
                  }
                  else
                  {
                      MessageBox.Show("Таких записей не существует!!!", "Внимание!", MessageBoxButtons.OK);
                  }
                  oc.Close();


    Вот так создавал таблицу:

    ExpandedWrap disabled
      create table Administrator
      (Kod_admina int identity(1,1) primary key,
      FIO varchar(20),
      Telefon varchar(7),
      E_mail varchar(21),
      ICQ varchar(9),
      Login varchar(10),
      PWD varchar(15),
      Data_sozdaniya datetime,
      Connect_stat tinyint not null)
      Неплохо было бы сказать, что именно означает "хоть убейся не хочет". Ошибка компиляции, исполнения, базы данных? Код исполняется, но ничего не происходит?

      Я бы сменил екраниропвку в sql коде. Б мускуле используются не прямые скобки, а косые кавычки.

      Добавлено
      Звездочка не нужна : DELETE FROM Administrator ...
        Цитата MIF @
        Неплохо было бы сказать, что именно означает "хоть убейся не хочет". Ошибка компиляции, исполнения, базы данных? Код исполняется, но ничего не происходит?

        Я бы сменил екраниропвку в sql коде. Б мускуле используются не прямые скобки, а косые кавычки.

        Добавлено
        Звездочка не нужна : DELETE FROM Administrator ...

        Спс именно DELETE FROM Administrator ... то что и нада)))

        Вот возникла новая проблемка, оказывается у меня с табилцей админ связана таблица СМС тоесть сообщения, в которой хранятся сообщения от простых пользователей...

        Вот при удалении админа нада автоматически подхватывать удаление и всех СМС которые ему пренадлежат:

        ExpandedWrap disabled
          string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True";
                      SqlConnection oc = new SqlConnection(con_str);
                      oc.Open();
                      string mySQLStr;
                      mySQLStr = "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));" + "SELECT Count(SMS.[Kod_admina]) AS [Kod_admina] FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'))";
                      SqlCommand comm = new SqlCommand(mySQLStr, oc);
                      SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult);
                      myReader.Read();
                      if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK)
                       {
                           mySQLStr = "DELETE FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'));" + "DELETE FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'))";
                           comm = new SqlCommand(mySQLStr, oc);
                           myReader.Close();
                           comm.ExecuteScalar();
                       }
                      oc.Close();


        СМС удаляются а вот админ остается:(
        Что опять я напортачил в запросе с выборкой и удалением???
        Таблици:

        ExpandedWrap disabled
          create table Administrator
          (Kod_admina int identity(1,1) primary key,
          FIO varchar(20),
          Telefon varchar(7),
          E_mail varchar(21),
          ICQ varchar(9),
          Login varchar(10),
          PWD varchar(15),
          Data_sozdaniya datetime,
          Connect_stat tinyint not null)
           
          create table SMS
          (Kod_sms int identity(1,1) primary key,
          Ot_kogo_sms varchar(10),
          Tekst_sms varchar(125),
          Kod_admina int references Administrator(Kod_admina))
          Попробуй поставить первым запрос DELETE FROM SMS, а потом уже удалять админа, чтоб не нарушать целостность. А вообще, лучше поробовать настроить в MySQL каскадное удаление записей для связи Administrator-SMS, если мускул умеет, конечно.
            ExpandedWrap disabled
              string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True";
                          SqlConnection oc = new SqlConnection(con_str);
                          oc.Open();
                          string mySQLStr;
                          mySQLStr = "SELECT Count(SMS.[Kod_admina]) AS [Kod_admina] FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'));" + "SELECT Count(Administrator.[Kod_admina]) AS [Kod_admina] FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'))";
                          SqlCommand comm = new SqlCommand(mySQLStr, oc);
                          SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult);
                          myReader.Read();
                          if (MessageBox.Show("Вы действительно хотите удалить этого администратора?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK)
                          {
                              mySQLStr = "DELETE FROM SMS WHERE (((SMS.[Kod_admina])='" + textBox8.Text + "'));" + "DELETE FROM Administrator WHERE (((Administrator.[Kod_admina])='" + textBox8.Text + "'))";
                              comm = new SqlCommand(mySQLStr, oc);
                              myReader.Close();
                              comm.ExecuteScalar();
                          }
                          oc.Close();


            Ура так пашет...Спс всем за помощ))
              Блин чем далее продвигаюсь тем сложнее :( Щяс нада написать тройной запрос.
              Таблици:

              ExpandedWrap disabled
                create table Postavshiki
                (Kod_postavshika int identity(1,1) primary key,
                Nazvanie_postavshika varchar(10),
                Predstavitel_FIO varchar(20),
                Adress varchar(15),
                Telefon varchar(15),
                Web_sait varchar(10),
                E_mail varchar(21),
                Skidka int,
                Login varchar(10),
                PWD varchar(15),
                Data_sozdaniya datetime,
                Connect_stat tinyint not null)
                 
                create table Tovari
                (Kod_tovara int identity(1,1) primary key,
                Kod_proizvod int references Proizvoditeli(Kod_proizvod),
                Kod_postavshika  int references Postavshiki(Kod_postavshika),
                Naimenovanie_tovara varchar(20),
                Model varchar(20),
                Opisanie varchar(20),
                Nali4ie bit,
                Data_postavki datetime,
                Cena_postavki int,
                Data_Prodaji datetime,
                Cena_prodaji int,
                Garantiya int)
                 
                create table Kategory
                (Nomer_kategory int identity(1,1) primary key,
                Nazvanie_kategory varchar(10),
                Kod_tovara int references Tovari(Kod_tovara))


              Суть проблемы такова. Нада удалить выбраного поставщика с его товарами, но, у меня ж товары связаны с категорией, тобишь нада начинать с категории удалять....сначала с категории удаляем нужные строки потом с товаров и наконец удаляем самого поставщика...Вот тройной запрос я неприложу ума как построить, двойной с горем пополам и с вашей помощю получился...

              Вот код:

              ExpandedWrap disabled
                string con_str = "Data Source=swordfish\\tetris;Initial Catalog=AlexShop;Integrated Security=True";
                            SqlConnection oc = new SqlConnection(con_str);
                            oc.Open();
                            string mySQLStr;
                            mySQLStr = "SELECT Count(Kategory.[Kod_tovara]) AS [Kod_tovara] FROM Kategory WHERE (((Kategory.[Kod_tovara])='" + textBox19.Text + "'));" + "SELECT Count(Tovari.[Kod_postavshika]) AS [Kod_postavshika] FROM Tovari WHERE (((Tovari.[Kod_postavshika])='" + textBox19.Text + "'));" + "SELECT Count(Postavshiki.[Kod_postavshika]) AS [Kod_postavshika] FROM Postavshiki WHERE (((Postavshiki.[Kod_postavshika])='" + textBox19.Text + "'))";
                            SqlCommand comm = new SqlCommand(mySQLStr, oc);
                            SqlDataReader myReader = comm.ExecuteReader(CommandBehavior.SingleResult);
                            myReader.Read();
                            if (MessageBox.Show("Вы действительно хотите удалить этого поставщика?", "Внимание!", MessageBoxButtons.OKCancel) == DialogResult.OK)
                            {
                                mySQLStr = "DELETE FROM Kategory WHERE (((Kategory.[Kod_tovara])='" + textBox19.Text + "'));" + "DELETE FROM Tovari WHERE (((Tovari.[Kod_postavshika])='" + textBox19.Text + "'));" + "DELETE FROM Postavshiki WHERE (((Postavshiki.[Kod_postavshika])='" + textBox19.Text + "'))";
                                comm = new SqlCommand(mySQLStr, oc);
                                myReader.Close();
                                comm.ExecuteScalar();
                            }
                            oc.Close();


              Админ вводит в текстбокс19 лишь код поставщика и все относившиеся данные к нему с двух таблиц удаляются....Без категории отлично удаляется все, но мне категория нужна...Помогите пож разобратся...
                Непонятно, почему в таблице категорий внешний ключ на код товара? Как бы обычно товар относится к какой-либо категории, а не наоборот.
                  Цитата wdk @
                  Непонятно, почему в таблице категорий внешний ключ на код товара? Как бы обычно товар относится к какой-либо категории, а не наоборот.

                  ExpandedWrap disabled
                    create table Tovari
                    (Kod_tovara int identity(1,1) primary key,
                    Nomer_kategory int references Kategory(Nomer_kategory),
                    Kod_proizvod int references Proizvoditeli(Kod_proizvod),
                    Kod_postavshika  int references Postavshiki(Kod_postavshika),
                    Naimenovanie_tovara varchar(20),
                    Model varchar(20),
                    Opisanie varchar(20),
                    Nali4ie bit,
                    Data_postavki datetime,
                    Cena_postavki int,
                    Data_Prodaji datetime,
                    Cena_prodaji int,
                    Garantiya int)
                     
                    create table Kategory
                    (Nomer_kategory int identity(1,1) primary key,
                    Nazvanie_kategory varchar(10))


                  Тоесть так?) Я уже с этими созданиями таблиц и запросами заморочился, вот и проявляется рассеянность моя:) Если это так как я показал, то хватит 2-х запросов, что были приведены в коде выше:)
                  Сообщение отредактировано: TetRis -
                  1 пользователей читают эту тему (1 гостей и 0 скрытых пользователей)
                  0 пользователей:


                  Рейтинг@Mail.ru
                  [ Script execution time: 0,0307 ]   [ 15 queries used ]   [ Generated: 19.05.24, 10:42 GMT ]