Главная страница
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.02 c
2-1209990468
Grant
2008-05-05 16:27
2008.06.01
Проверка пути в DLL


4-1190069015
Альберт_
2007-09-18 02:43
2008.06.01
как узнать rect перерисовки чужого окна?


15-1208344909
XentaAbsenta
2008-04-16 15:21
2008.06.01
Разгильдяйство и ничегонеделанье.Чат


2-1209888831
Dmitry_177
2008-05-04 12:13
2008.06.01
ADO + Access


15-1207716200
KSergey
2008-04-09 08:43
2008.06.01
Ничего так себе робототехника дошла....