
![]() |
Наши проекты:
Журнал · Discuz!ML · Wiki · DRKB · Помощь проекту |
|
ПРАВИЛА | FAQ | Помощь | Поиск | Участники | Календарь | Избранное | RSS |
[216.73.216.3] |
![]() |
|
Сообщ.
#1
,
|
|
|
Здравствуйте. Вопрос - как очистить таблицу dbf с помощью запроса?
![]() ![]() "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" + Application.StartupPath + "\\" + ";Extended Properties=dBASE IV;User ID=Admin;Password="; Запрос ![]() ![]() delete table такой вариант не подходит. Truncate как я понял не поддерживается. Заранее спасибо. |
![]() |
Сообщ.
#2
,
|
|
Почему синтакс DELETE и TRUNCATE не подходит?
|
Сообщ.
#3
,
|
|
|
Цитата MIF @ Почему синтакс DELETE и TRUNCATE не подходит? Ну DELETE помечает на удаление, а мне надо чтобы эти записи не отображались после очистки. А на TRUNCATE ругается ![]() ![]() truncate table regdate "Ошибочная инструкция SQL; предполагалось 'DELETE', 'INSERT', 'PROCEDURE', 'SELECT' или 'UPDATE'". Пишу в Visual Studo 2008. TRUNCATE поддерживается OleDb? |
Сообщ.
#4
,
|
|
|
Может есть что-то подобное Table в Delphi
![]() ![]() with Table1 do begin Active := False; DataBaseName := GetCurrentDir + '\'; TableName := 'temp.dbf'; TableType := ttDbase; EmptyTable; end; |
Сообщ.
#5
,
|
|
|
![]() ![]() Delete From Table1 на dbf помечает на удаление? |
Сообщ.
#6
,
|
|
|
Цитата coder @ ![]() ![]() Delete From Table1 на dbf помечает на удаление? Да, помечает. Но если после выполнения ![]() ![]() Delete From Table1 сделать запрос ![]() ![]() select * from table1 запрос ничего не вернет. |
![]() |
Сообщ.
#7
,
|
|
Не занаю с каким типом дБасе ты работаешь. В FoxPro есть команды PACK и SET DELETE ON/OFF, которые должны помочь в решений задачи.
|
Сообщ.
#8
,
|
|
|
Цитата MIF @ Не занаю с каким типом дБасе ты работаешь. В FoxPro есть команды PACK и SET DELETE ON/OFF, которые должны помочь в решений задачи. В FoxPro мне не нужно. Приложение в Visual Studio 2008. Как вариант - создать таблицу, заполнить ее, использовать таблицу по назначению, после этого удалить таблицу. Но хотелось бы просто очистить ее. |
Сообщ.
#9
,
|
|
|
И еще вопрос. Каким способом добавить данные в таблицу, полученные из запроса. Делаю так, но добавление происходит долго
![]() ![]() 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); } } |
Сообщ.
#10
,
|
|
|
конструкция Insert () Select from разве не работает?
|
Сообщ.
#11
,
|
|
|
Цитата Paul_K @ конструкция Insert () Select from разве не работает? А как быть если таблицы находятся в разных каталогах. Например таблицы из которых идет выборка, находятся в d:\temp\, а таблицы в которую надо записать в d:\111\? ![]() ![]() 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. Проверьте существование объекта и правильность имени и пути" - понятно, что не находит таблицу. Делать два подключения или как в этом случае быть? Заранее спасибо. Или указать полный путь для таблиц? |
Сообщ.
#12
,
|
|
|
Все решился вопрос - указал полный путь к табличкам. Но с очисткой таблицы так и не получилось.
|