Форум: "Базы";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Внизвыгрузка из датасета через ODBC и ADO в разные форматы Найти похожие ветки
← →
Циркуль (2007-12-26 16:13) [0]Есть такая задача - выгружать в файл некий датасет (не АДОшный) в соответствии с заданной пользователем ADOшной ConnectionString, которую тот может самостоятельно собрать.
Т.е., если, например, поступит следующая COnnectionString:DRIVER=Microsoft Text Driver (*.txt; *.csv)
UID=admin
UserCommitSync=Yes
Threads=3
SafeTransactions=0
PageTimeout=5
MaxScanRows=8
MaxBufferSize=2048
FIL=text
Extensions=None,asc,csv,tab,txt
DriverId=27
DefaultDir=C:\DEV\TestProjects\ADO
то нужно будет спросить пользователя имя файла, и под этим именем в папке "C:\DEV\TestProjects\ADO" создать текcтовый файл, содержащий данные из исходного датасета.
Сделал на пробу так:procedure TForm1.Button2Click(Sender: TObject);
var
I: Integer;
S: string;
begin
s := "";
for I := 1 to 2000 do
S := S + "0";
ADOCommand1.CommandText := "create table [table_3#txt] (ID integer, AName LONGCHAR, Montant currency)";
ADOCommand1.Execute;
ADOCommand1.CommandText := Format("insert into [table_3#txt] (ID, AName, Montant) values (1, ""%s"", 100.1)", [s]);
ADOCommand1.Execute;
end;
Вроде выгрузилось нормально.
Но, если изменить имя столбца, например
...
ADOCommand1.CommandText := "create table [table_3#txt] (ID integer, AName2 LONGCHAR, Montant currency)";
...
ADOCommand1.CommandText := Format("insert into [table_3#txt] (ID, AName2, Montant) values (1, ""%s"", 100.1)", [s]);
...
то при попытке повторной выгрузки (удалив предварительно получившийся вначале table_3.txt) получаем сообщение
"[Microsoft][Драйвер ODBC Текст] Объект "table_3.txt" не найден ядром базы данных Microsoft Jet. Проверьте существование объекта и правильность имени и пути."
Меняем название столбца на исходное, или меняем название файла на другое - все работает.
← →
Циркуль (2007-12-26 16:19) [1]И еще, я так понял, что в случае
DRIVER=Microsoft Excel Driver (*.xls)
экселевский файл, куда будет выгружен датасет уже должен к этому моменту существовать. Т.е. нет возможности запросом типа "create database db1" создать файл db1.xls и уже в него делать "create table ..." и прочие insert"ы?
И еще, для всех типов jet драйверов придется по-разному собирать запрос, т.е. напримет для текстовых использовать тип данных LONGCHAR, а для Excel или dbf - MEMO и т.п. ?
Страницы: 1 вся ветка
Форум: "Базы";
Текущий архив: 2008.06.01;
Скачать: [xml.tar.bz2];
Память: 0.45 MB
Время: 0.066 c