Главная страница
    Top.Mail.Ru    Яндекс.Метрика
Форум: "Базы";
Текущий архив: 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.041 c
15-1208365801
{RASkov}
2008-04-16 21:10
2008.06.01
Jawa в телефонах


3-1197633374
Девушка
2007-12-14 14:56
2008.06.01
управление доступом к файлам на сервере посредством бд -клиента


2-1210441443
Jeqa
2008-05-10 21:44
2008.06.01
вычисляемые поля


2-1210237817
Efimov
2008-05-08 13:10
2008.06.01
Как построить диаграмму по данным из БД?


2-1209983586
Res
2008-05-05 14:33
2008.06.01
после recv виснет





Afrikaans Albanian Arabic Armenian Azerbaijani Basque Belarusian Bulgarian Catalan Chinese (Simplified) Chinese (Traditional) Croatian Czech Danish Dutch English Estonian Filipino Finnish French
Galician Georgian German Greek Haitian Creole Hebrew Hindi Hungarian Icelandic Indonesian Irish Italian Japanese Korean Latvian Lithuanian Macedonian Malay Maltese Norwegian
Persian Polish Portuguese Romanian Russian Serbian Slovak Slovenian Spanish Swahili Swedish Thai Turkish Ukrainian Urdu Vietnamese Welsh Yiddish Bengali Bosnian
Cebuano Esperanto Gujarati Hausa Hmong Igbo Javanese Kannada Khmer Lao Latin Maori Marathi Mongolian Nepali Punjabi Somali Tamil Telugu Yoruba
Zulu
Английский Французский Немецкий Итальянский Португальский Русский Испанский