Главная страница
Top.Mail.Ru    Яндекс.Метрика
Текущий архив: 2008.06.01;
Скачать: CL | DM;

Вниз

выгрузка из датасета через 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;
Скачать: CL | DM;

Наверх




Память: 0.47 MB
Время: 0.017 c
2-1210355753
art36
2008-05-09 21:55
2008.06.01
Нажатие клавиши в другом приложении


15-1208483714
Slider007
2008-04-18 05:55
2008.06.01
С днем рождения ! 18 апреля 2008 пятница


2-1210499472
Nucer
2008-05-11 13:51
2008.06.01
GetMem и записи со строками


2-1210456243
DEATH_666
2008-05-11 01:50
2008.06.01
Помогите с курсорами расширения CUR???


6-1187952925
plotn
2007-08-24 14:55
2008.06.01
работа с TTCPClient