Невозможно найти устанавливаемый isam 1c
Репутация: нет
Всего: нет
В общем сабж.
Вот код, ругается на строку открытия соединения 46 и пишет "Невозможно найти устанавливаемый ISAM".
namespace Excel_to_Acces
public partial class Form1 : Form
private string connStrToExcl;
private string strExclType;
public Form1()
InitializeComponent();
>
private void Form1_Load(object sender, EventArgs e)
comboBox1.Items.Add("Excel 8.0");
comboBox1.Items.Add("Excel 5.0");
>
private void button1_Click(object sender, EventArgs e)
openFileDialog1.ShowDialog();
>
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
//MessageBox.Show(openFileDialog1.FileName.Substring(13));
string strExclName = openFileDialog1.FileName.Substring(13);
connStrToExcl = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = d:\\Исходники\\"
+ strExclName +";Extended Properties="+strExclType+"; HDR=No; IMEX=1";
readExclFile(strExclName);
>
public void readExclFile(string strSheetName) string strCommand = "Select * From" + strSheetName;
OleDbConnection conn = new OleDbConnection(connStrToExcl);
//MessageBox.Show(connStrToExcl.ToString());
conn.Open();
OleDbDataAdapter daAdapter = new OleDbDataAdapter(strCommand, connStrToExcl);
DataTable dtTable = new DataTable(strSheetName);
daAdapter.FillSchema(dtTable, SchemaType.Source);
daAdapter.Fill(dtTable);
conn.Close();
MessageBox.Show("Количество столбцов= " + dtTable.Columns.Count.ToString()
+ " ; Количество строк= " + dtTable.Rows.Count.ToString());
>
Репутация: 8
Всего: 232
Код |
connStrToExcl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Исходники\\" + strExclName +";Extended Properties="+strExclType+";HDR=No;IMEX=1"; |
Репутация: 35
Всего: 65
Код |
connStrToExcl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Исходники\\" + strExclName +";Extended Properties="+ Convert.ToChar(34).ToString() + strExclType+";HDR=No;IMEX=1" + Convert.ToChar(34).ToString(); |
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
Репутация: нет
Всего: нет
мр ДУДА - получилось то же самое.
Томас - этот вариант помог, расскажи в чем прикол.
Теперь другое: пишет "Ошибка синтаксиса (пропущен оператор) в выражении запроса '* FromИндекс 2008.xls'" и ругается на строку 49 daAdapter.FillSchema(dtTable, SchemaType.Source);
он что, SELECT не может найти?
Репутация: нет
Всего: нет
Код |
string strCommand = "Select * From" + strSheetName; |
а как мне узнать вот это самое [Лист2$]
Репутация: 8
Всего: 232
Модератор: Пожалуйста, один топик - один вопрос.
Для начала можно погуглить, наверняка ответ найдётся.
Репутация: 35
Всего: 65
выражение в кавычках.
Теперь ты пишешь в коде
Код |
string strCommand = "Select * From" + strSheetName; |
А шпацию кто будет писать, Пушкин? После From сначала шпация, а потом кавычки. И возьми свой Индекс 2008.xls в одинарные кавычки. Это все же string.
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
Репутация: нет
Всего: нет
Вот как решил проблему: поскольку мне лень все время ковыряться в коде и менять имена файлов в строке, то я сделал проще. Добавил элемент C1XLBook.
Здесь sPathExcl - полный путь к файлу, включая имя. Загружаем в него экселевский файл и получаем доступ к его элементам.
В итоге строка соединения получилась вот такой:
Код |
string strCommand = "Select * From [" + c1XLBook1.Sheets[0].Name + "$]"; |
Осталось только придумать как работать с эксель-файлами, в которых несколько листов.
Кстати: все это не работает с офисом 2007. Поэтому приходится сначала сохранять файл в эксель97-2003.
Репутация: нет
Всего: 1
Цитата(lankin @ 5.1.2008, 08:39) |
Кстати: все это не работает с офисом 2007. Поэтому приходится сначала сохранять файл в эксель97-2003. |
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.
[ Время генерации скрипта: 0.1700 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Как устранить ошибки Не удалось найти устанавливаемый ISAM
Я написал код VBA в книге Excel для извлечения данных из базы данных Access в том же каталоге на рабочем столе. Он отлично работает на моей машине и нескольких других машинах под управлением Windows XP, но когда мы тестировали это на машине Vista, мы обнаружили следующую ошибку:
Не удалось найти устанавливаемый ISAM
Я много раз искал в Интернете, но, похоже, не нашел конкретного ответа. Строка подключения в порядке, и, как я уже говорил, она работает на нескольких машинах.
Кто-нибудь знает, что может быть причиной этого? Моя строка подключения выглядит следующим образом:
Поместите одинарные кавычки вокруг Extended Properties :
Попробуйте, действительно работает.
- 2 Круто. Он также работает с Microsoft.ACE.OLEDB.12.0 провайдер и Excel 12.0 xml Расширенные свойства. Благодарность!
- 1 Спасибо, что решила для меня странную проблему. Обратите внимание, что флаг IMEX = 1 - это то, что вам нужно, если вы получаете загадочные недостающие данные в ваших результатах.
- Легенда! Избавил меня от многих проблем
- Я люблю тебя! Ты спасатель @ 2:00 Да благословит тебя Бог;) :)
Попробуйте заключить источник данных в одинарные кавычки:
Проблема, как правило, заключается в пустом пространстве, которое имеет значение для анализатора.
Если у вас были другие атрибуты (например, расширенные свойства), их значения, возможно, также придется заключить в одинарные кавычки:
Вы также можете использовать двойные кавычки; однако вам, вероятно, придется от них сбежать, и я считаю, что это более Боль в алгоритме чем синглы.
Просто используйте Jet OLEDB: в строке подключения. это решило для меня.
Я только что столкнулся с очень похожей проблемой.
Как и вы, моя строка подключения оказалась правильной - и действительно, точно такая же строка подключения работала в других сценариях.
Перезагрузка машины «решила» проблему (пока…?). Это произошло при использовании Jet версии 4.0.9505.0 в Windows XP.
Я использовал это для обновления файла Excel 12 xlsx
Используйте эту строку подключения
- OP получает данные не из Excel, а из MS Access, поэтому строка подключения Excel не является хорошей идеей. Кроме того, в теге написано VBA, поэтому показываемый синтаксис не подходит.
Вероятно, это потому, что на машине не установлен MSACeesss? Я бы удостоверился, что у вас установлена последняя версия Jet, и если она по-прежнему не работает, найдите файл Msrd3x40.dll на одной из других машин, скопируйте его куда-нибудь на машину Vista и вызовите на нем regsvr32 (в режиме администратора ), который должен разобраться в этом за вас.
- OLE DB (обратите внимание на пробел) имеет поставщиков, а не «драйверы», и ни один из них не имеет имени «MS Access». Поставщик ACE называется Microsoft.ACE.OLEDB. а устаревшие поставщики Jet были названы Microsoft.Jet.OLEDB. .
Используйте приведенную ниже строку подключения для чтения из файла XLSX:
строка ConnectionString = "Provider = Microsoft.ACE.OLEDB.12.0; Data Source =" + <> + "; Extended Properties = Excel 8.0;";
Почему снова, потому что перед тем как запостить это — пользовался поиском и нашел кучу вопросов на этом форуме и вообще в интернете касательно ошибки "Невозможно найти устанавливаемый ISAM". Но кругом одни предположения почему оно так. кто советует офис переустановить, кто MDAC переустановить/обновить и пр. ситуаций разных куча в общем.
И вот еще одна, на сей раз моя ситуация )))
Цель: подключиться к *.dbf
Что делаю:
Подскажите, пожалуйста. может из дому на работу какие-то DLL-ки перетащить и заменить тамошние? что же сделать все-таки? Извините за столь истрепаный вопрос и спасибо за внимание!
Здравствуйте, vit0s, Вы писали:
V>Цель: подключиться к *.dbf
Цель хорошая, а средства несколько неочень. :)
Здравствуйте, ZAMUNDA, Вы писали:
ZAM>Я искал правду. не нашёл.
только что перелопатил много информации с интернета. уже почти выучил как эта вся ерунда в реестре между собой взаимодействует и какие ДЛЛ за собой что тащит. завтра на работе попытаюсь восстановить такую же картину как и дома ))) Посмотрим что будет
От: | algol | about:blank |
Дата: | 24.04.07 22:48 | |
Оценка: |
Здравствуйте, vit0s, Вы писали:
V>Цель: подключиться к *.dbf
Во-первых, у вас используется OdbcConnection, а строка подключения для OLEDB. Это немножко разные вещи.
Во-вторых, для подключения к dbf лучше использовать VFPOLEDB провайдер. Ваш подход похож на вырезание гланд через известное место. То есть вы имеете цепочку:
ваше приложение->ODBC (или OLEDB)->Jet->ISAM драйвер->dbf
И сами ISAM драйвера имеют очень ограниченную функциональность, предназначенную в основном только для импорта данных из различных форматов в Access.
V>Софт: дома и на работе — одинаково: WinXP SP2, Office-2007.
V>Пытался: обновить MDAC. Результата нет — ругался на систему он. Типа то язык не тот, то еще что-то.
MDAC нужно брать не самый последний, а какой-то более старый, 2.5 или 2.6, точно не помню. В более поздние версии Jet не входит. Если не ошибаюсь, то для Jet есть отдельный инсталлятор. ISAM драйвер можно поставить и через Office. В custom install есть раздел типа "Средства доступа к базам данных" и там можно отметить нужные драйвера для установки.
Репутация: нет
Всего: нет
В общем сабж.
Вот код, ругается на строку открытия соединения 46 и пишет "Невозможно найти устанавливаемый ISAM".
namespace Excel_to_Acces
public partial class Form1 : Form
private string connStrToExcl;
private string strExclType;
public Form1()
InitializeComponent();
>
private void Form1_Load(object sender, EventArgs e)
comboBox1.Items.Add("Excel 8.0");
comboBox1.Items.Add("Excel 5.0");
>
private void button1_Click(object sender, EventArgs e)
openFileDialog1.ShowDialog();
>
private void openFileDialog1_FileOk(object sender, CancelEventArgs e)
//MessageBox.Show(openFileDialog1.FileName.Substring(13));
string strExclName = openFileDialog1.FileName.Substring(13);
connStrToExcl = "provider=Microsoft.JET.OLEDB.4.0;" + "data source = d:\\Исходники\\"
+ strExclName +";Extended Properties="+strExclType+"; HDR=No; IMEX=1";
readExclFile(strExclName);
>
public void readExclFile(string strSheetName) string strCommand = "Select * From" + strSheetName;
OleDbConnection conn = new OleDbConnection(connStrToExcl);
//MessageBox.Show(connStrToExcl.ToString());
conn.Open();
OleDbDataAdapter daAdapter = new OleDbDataAdapter(strCommand, connStrToExcl);
DataTable dtTable = new DataTable(strSheetName);
daAdapter.FillSchema(dtTable, SchemaType.Source);
daAdapter.Fill(dtTable);
conn.Close();
MessageBox.Show("Количество столбцов= " + dtTable.Columns.Count.ToString()
+ " ; Количество строк= " + dtTable.Rows.Count.ToString());
>
Репутация: 8
Всего: 232
Код |
connStrToExcl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Исходники\\" + strExclName +";Extended Properties="+strExclType+";HDR=No;IMEX=1"; |
Репутация: 35
Всего: 65
Код |
connStrToExcl = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=d:\\Исходники\\" + strExclName +";Extended Properties="+ Convert.ToChar(34).ToString() + strExclType+";HDR=No;IMEX=1" + Convert.ToChar(34).ToString(); |
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
Репутация: нет
Всего: нет
мр ДУДА - получилось то же самое.
Томас - этот вариант помог, расскажи в чем прикол.
Теперь другое: пишет "Ошибка синтаксиса (пропущен оператор) в выражении запроса '* FromИндекс 2008.xls'" и ругается на строку 49 daAdapter.FillSchema(dtTable, SchemaType.Source);
он что, SELECT не может найти?
Репутация: нет
Всего: нет
Код |
string strCommand = "Select * From" + strSheetName; |
а как мне узнать вот это самое [Лист2$]
Репутация: 8
Всего: 232
Модератор: Пожалуйста, один топик - один вопрос.
Для начала можно погуглить, наверняка ответ найдётся.
Репутация: 35
Всего: 65
выражение в кавычках.
Теперь ты пишешь в коде
Код |
string strCommand = "Select * From" + strSheetName; |
А шпацию кто будет писать, Пушкин? После From сначала шпация, а потом кавычки. И возьми свой Индекс 2008.xls в одинарные кавычки. Это все же string.
Крепко жму горло, искренне ваш Thomas. (С)vingrad
Некоторые сорта флоры буквально за одно мгновение превращают нас в фауну!
Проблемы негров шерифа не волнуют.
Репутация: нет
Всего: нет
Вот как решил проблему: поскольку мне лень все время ковыряться в коде и менять имена файлов в строке, то я сделал проще. Добавил элемент C1XLBook.
Здесь sPathExcl - полный путь к файлу, включая имя. Загружаем в него экселевский файл и получаем доступ к его элементам.
В итоге строка соединения получилась вот такой:
Код |
string strCommand = "Select * From [" + c1XLBook1.Sheets[0].Name + "$]"; |
Осталось только придумать как работать с эксель-файлами, в которых несколько листов.
Кстати: все это не работает с офисом 2007. Поэтому приходится сначала сохранять файл в эксель97-2003.
Репутация: нет
Всего: 1
Цитата(lankin @ 5.1.2008, 08:39) |
Кстати: все это не работает с офисом 2007. Поэтому приходится сначала сохранять файл в эксель97-2003. |
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.
[ Время генерации скрипта: 0.1297 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Репутация: нет
Всего: нет
Код |
using System; using System.Configuration; using System.Data; using System.Data.OleDb; using System.Linq; using System.Web; using System.Web.Security; using System.Web.UI; using System.Web.UI.HtmlControls; using System.Web.UI.WebControls; using System.Web.UI.WebControls.WebParts; using System.Xml.Linq; |
Строка вызова в форме написана следующим образом:
Сведения об исключении: System.Data.OleDb.OleDbException: Невозможно найти устанавливаемый ISAM.
Строка 22: OleDbConnection myAccessCon = new OleDbConnection(strAccessConn);
Строка 23: OleDbCommand myAccessCommand = new OleDbCommand(strAccessSelect,myAccessCon);
Строка 24: myAccessCon.Open();
Строка 25: try
Строка 26:
Исходный файл: c:\Documents and Settings\Мои документы\Visual Studio 2008\WebSites\WebSite2\Default.aspx.cs Строка: 24
[OleDbException (0x80004005): Невозможно найти устанавливаемый ISAM.]
Репутация: нет
Всего: 453
И что вопрос делает в форуме по MS Access.
Добавлено через 8 минут и 46 секунд
Возможные причины:
Используемая учетная запись не имеет доступа к разделу реестра HKEY_LOCAL_MACHINE\SOFTWARE\ODBC.
Другой процесс прослушивает UDP-порт, который требуется текущему процессу.
В главную форму объекта было добавлено настраиваемое поле атрибута типа NTEXT.
Поле настраиваемого атрибута в связанной записи содержит более 4000 знаков.
Добавлено через 11 минут и 20 секунд
Поиск по мсдн и технету даст ещё кучу информации.
О(б)суждение моих действий - в соответствующей теме, пожалуйста. Или в РМ. И высшая инстанция - Администрация форума.
Если Вам понравилась атмосфера форума, заходите к нам чаще! С уважением, stab, mr.DUDA, Exception.
[ Время генерации скрипта: 0.0944 ] [ Использовано запросов: 21 ] [ GZIP включён ]
Читайте также: