На главную Наши проекты:
Журнал   ·   Discuz!ML   ·   Wiki   ·   DRKB   ·   Помощь проекту
ПРАВИЛА FAQ Помощь Участники Календарь Избранное RSS
msm.ru
  
> Очитить таблицу , dbf
    Здравствуйте. Вопрос - как очистить таблицу dbf с помощью запроса?
    ExpandedWrap disabled
      "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\" + ";Extended Properties=dBASE IV;User ID=Admin;Password=";

    Запрос
    ExpandedWrap disabled
      delete table

    такой вариант не подходит.
    Truncate как я понял не поддерживается. Заранее спасибо.
      Почему синтакс DELETE и TRUNCATE не подходит?
        Цитата MIF @
        Почему синтакс DELETE и TRUNCATE не подходит?

        Ну DELETE помечает на удаление, а мне надо чтобы эти записи не отображались после очистки. А на TRUNCATE ругается
        ExpandedWrap disabled
          truncate table regdate

        "Ошибочная инструкция SQL; предполагалось 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' или 'UPDATE'".
        Пишу в Visual Studo 2008. TRUNCATE поддерживается OleDb?
        Сообщение отредактировано: valyan -
          Может есть что-то подобное Table в Delphi
          ExpandedWrap disabled
            with Table1 do
              begin
                Active := False;
                DataBaseName := GetCurrentDir + '\';
                TableName := 'temp.dbf';
                TableType := ttDbase;
                EmptyTable;
              end;
          Сообщение отредактировано: valyan -
            ExpandedWrap disabled
              Delete From Table1

            на dbf помечает на удаление?
              Цитата coder @
              ExpandedWrap disabled
                Delete From Table1

              на dbf помечает на удаление?

              Да, помечает. Но если после выполнения
              ExpandedWrap disabled
                Delete From Table1

              сделать запрос
              ExpandedWrap disabled
                select * from table1

              запрос ничего не вернет.
                Не занаю с каким типом дБасе ты работаешь. В FoxPro есть команды PACK и SET DELETE ON/OFF, которые должны помочь в решений задачи.
                  Цитата MIF @
                  Не занаю с каким типом дБасе ты работаешь. В FoxPro есть команды PACK и SET DELETE ON/OFF, которые должны помочь в решений задачи.

                  В FoxPro мне не нужно. Приложение в Visual Studio 2008. Как вариант - создать таблицу, заполнить ее, использовать таблицу по назначению, после этого удалить таблицу. Но хотелось бы просто очистить ее.
                    И еще вопрос. Каким способом добавить данные в таблицу, полученные из запроса. Делаю так, но добавление происходит долго
                    ExpandedWrap disabled
                      string ConStr;
                      string StrInsert = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\" + ";Extended Properties=dBASE IV;User ID=Admin;Password=";
                      string path = "C:\\base\\";
                      string query = " select distinct law.pers_num_k, law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm, reg.pers_num, reg.family, reg.name, reg.father, lcn.sv from lawdat_p as law, register as reg, lcn as lcn where (law.family_k is not null) and (law.name_k is not null) and (reg.num = law.num) and (reg.num = lcn.num) order by law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm";
                      string in_str = " insert into regdate (pers_num, family, name, father, d_rogd, d_sm, rayon, pers_num_n, family_n, father_n, name_n, sv) values (@pers_num, @family, @name, @father, @d_rogd, @d_sm, @rayon, @pers_num_n, @family_n, @father_n, @name_n, @sv)";
                      DirectoryInfo dir = new DirectoryInfo(path);
                      DirectoryInfo[] ds = dir.GetDirectories();
                      foreach (DirectoryInfo d in ds)
                      {
                        try
                        {
                           ConStr = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + path + d.Name + "\\" + ";Extended Properties=dBASE IV;User ID=Admin;Password=";
                           OleDbConnection conn = new OleDbConnection(ConStr);
                           OleDbCommand cmd = new OleDbCommand(query, conn);
                           conn.Open();
                           OleDbDataReader reader = cmd.ExecuteReader();
                           while (reader.Read())
                           {
                               OleDbConnection conn1 = new OleDbConnection(StrInsert);
                               OleDbCommand cmd1 = new OleDbCommand(in_str, conn1);
                               cmd1.Parameters.Add("@pers_num", OleDbType.Char);
                               cmd1.Parameters["@pers_num"].Value = reader[0];
                               cmd1.Parameters.Add("@family", OleDbType.Char);
                               cmd1.Parameters["@family"].Value = reader[1];
                               cmd1.Parameters.Add("@name", OleDbType.Char);
                               cmd1.Parameters["@name"].Value = reader[2];
                               cmd1.Parameters.Add("@father", OleDbType.Char);
                               cmd1.Parameters["@father"].Value = reader[3];
                               cmd1.Parameters.Add("@d_rogd", OleDbType.Date);
                               cmd1.Parameters["@d_rogd"].Value = reader[4];
                               cmd1.Parameters.Add("@d_sm", OleDbType.Date);
                               cmd1.Parameters["@d_sm"].Value = reader[5];
                               cmd1.Parameters.Add("@rayon", OleDbType.Char);
                               cmd1.Parameters["@rayon"].Value = d.Name;
                               cmd1.Parameters.Add("@pers_num_n", OleDbType.Char);
                               cmd1.Parameters["@pers_num_n"].Value = reader[6];
                               cmd1.Parameters.Add("@family_n", OleDbType.Char);
                               cmd1.Parameters["@family_n"].Value = reader[7];
                               cmd1.Parameters.Add("@name_n", OleDbType.Char);
                               cmd1.Parameters["@name_n"].Value = reader[8];
                               cmd1.Parameters.Add("@father_n", OleDbType.Char);
                               cmd1.Parameters["@father_n"].Value = reader[9];
                               cmd1.Parameters.Add("@sv", OleDbType.Char);
                               cmd1.Parameters["@sv"].Value = reader[10];
                               conn1.Open();
                               cmd1.ExecuteNonQuery();
                               conn1.Close();    
                           }
                           reader.Close();
                         }
                         catch (Exception ex)
                         {
                             MessageBox.Show(ex.Message);
                         }
                      }
                      конструкция Insert () Select from разве не работает?
                        Цитата Paul_K @
                        конструкция Insert () Select from разве не работает?

                        А как быть если таблицы находятся в разных каталогах. Например таблицы из которых идет выборка, находятся в d:\temp\, а таблицы в которую надо записать в d:\111\?
                        ExpandedWrap disabled
                          insert into regdate (pers_num, family, name, father, d_rogd, d_sm, pers_num_n, family_n, father_n, name_n, sv)
                          select distinct law.pers_num_k, law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm, reg.pers_num, reg.family, reg.name, reg.father, lcn.sv
                          from lawdat_p as law, register as reg, lcn as lcn
                          where (law.family_k is not null) and (law.name_k is not null) and (reg.num = law.num) and (reg.num = lcn.num)
                          order by law.family_k, law.name_k, law.father_k, law.d_rogd_k, law.d_sm

                        Таблица regdate.dbf находится в d:\111\, остальные находятся в d:\temp\. Выдает ошибку
                        "Объект 'regdate' не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути" - понятно, что не находит таблицу. Делать два подключения или как в этом случае быть? Заранее спасибо.
                        Или указать полный путь для таблиц?
                        Сообщение отредактировано: valyan -
                          Все решился вопрос - указал полный путь к табличкам. Но с очисткой таблицы так и не получилось.
                          Сообщение отредактировано: valyan -
                          0 пользователей читают эту тему (0 гостей и 0 скрытых пользователей)
                          0 пользователей:


                          Рейтинг@Mail.ru
                          [ Script execution time: 0,1363 ]   [ 16 queries used ]   [ Generated: 10.09.25, 20:28 GMT ]