|
|
|
|
#1 |
|
Участник
|
У вас проблема с синтаксисом в команде создания файла dbf.
Попробуйте ее вытащить в info и выполнить например в Foxpro. Вот рабочий вариант: X++: CCADOConnection dBF_Con;
CCADOCommand aDO;
CCADORecordset aDR;
str filePath = 'c:\\1\\', fileName = '001.dbf';
str cmdText, cmd_del, cmd_value;
CustTable CustTable;
RContractTable RContractTable;
;
dBF_Con = new CCADOConnection();
aDO = new CCADOCommand();
aDR = new CCADORecordset();
dBF_Con.open("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Extended Properties=dbase 5.0;Data Source="+filePath+";");
ADO.activeConnection(dBF_Con);
if (dBF_Con)
{
cmd_del = "DROP Table "+ fileName;
ADO.commandText(cmd_del);
ADR = ADO.execute();
cmdText = " CREATE TABLE " + fileName + " (ACCOUNTNUM char(20), DATEDOG date, NDOG char(20), DOGACCOUNT char(10))"; // договора
ADO.commandText(cmdText);
ADR = ADO.execute();
}Как то так - сверьте с тем что есть у вас. Последний раз редактировалось asd1274; 04.04.2013 в 12:47. |
|
|
|
|
#2 |
|
Участник
|
Цитата:
Сообщение от asd1274
У вас проблема с синтаксисом в команде создания файла dbf.
Попробуйте ее вытащить в info и выполнить например в Foxpro. Вот рабочий вариант: X++: CCADOConnection dBF_Con;
CCADOCommand aDO;
CCADORecordset aDR;
str filePath = 'c:\\1\\', fileName = '001.dbf';
str cmdText, cmd_del, cmd_value;
CustTable CustTable;
RContractTable RContractTable;
;
dBF_Con = new CCADOConnection();
aDO = new CCADOCommand();
aDR = new CCADORecordset();
dBF_Con.open("Provider=Microsoft.Jet.OLEDB.4.0;Persist Security Info=False;Extended Properties=dbase 5.0;Data Source="+filePath+";");
ADO.activeConnection(dBF_Con);
if (dBF_Con)
{
cmd_del = "DROP Table "+ fileName;
ADO.commandText(cmd_del);
ADR = ADO.execute();
cmdText = " CREATE TABLE " + fileName + " (ACCOUNTNUM char(20), DATEDOG date, NDOG char(20), DOGACCOUNT char(10))"; // договора
ADO.commandText(cmdText);
ADR = ADO.execute();
}Как то так - сверьте с тем что есть у вас. |
|
|
|
|
#3 |
|
Участник
|
Какие именно - если можете дайте ваш код - попробую у себя запустить.
|
|
|
|
|
#4 |
|
Участник
|
X++: cmdText = " CREATE TABLE " + filenameTmp + " ("; cmdTextInsertTemplate = " INSERT INTO " + filenameTmp + " ("; while select usrExpImpField order by usrExpImpField.Sequence where usrExpImpField.GroupId == groupId { if (usrExpImpField.Enabled) { fieldName = usrExpImpField.ExFieldName ? usrExpImpField.ExFieldName : usrExpImpField.fieldName(false, ""); cmdText += strfmt("%1 %2%3,", fieldName, this.BaseTypeToADOType(usrExpImpField.baseType()), usrExpImpField.baseType() == Types::String ? strfmt("(%1)",usrExpImpField.FieldSize()) : ""); cmdTextInsertTemplate += fieldName + ","; } } cmdText = strdel(cmdText,strlen(cmdText),1); cmdText += ")"; cmdTextInsertTemplate = strdel(cmdTextInsertTemplate,strlen(cmdTextInsertTemplate),1); cmdTextInsertTemplate += ") values ("; dBF_Con = new CCADOConnection(); aDO = new CCADOCommand(); aDR = new CCADORecordset(); dBF_Con.open("Driver={Microsoft dBase Driver (*.dbf)};"); ADO.activeConnection(dBF_Con); if (dBF_Con) { ADO.commandText(cmdText); ADR = ADO.execute(); } |
|
|
|
|
#5 |
|
Участник
|
Если можно, то покажите здесь значение cmdText - перед "ADR = ADO.execute();" - я его прогоню в foxpro.
|
|
|
|
|
#6 |
|
Участник
|
Цитата:
Повторюсь, эта ошибка только на нескольких компьютерах |
|
|
|
|
#7 |
|
Участник
|
Все ясно - вы пытаетесь в операторе CREATE сразу указать путь к файлу - так делать нельзя. Как указывать путь к файлу в примере есть. Завтра утром выложу полностью пример как желательно делать - переделайте под себя и должно работать. Кроме того наверное имеет смысл разбить операторы CREATE и INSERT.
Последний раз редактировалось asd1274; 04.04.2013 в 20:03. |
|
|
| Теги |
| ado, dbf, создание файла |
|
|
| Опции темы | Поиск в этой теме |
| Опции просмотра | |
|