Главная страница
    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.05 c
3-1198824417
ivanovv
2007-12-28 09:46
2008.06.01
Как работать с файлом *.mdb, где названия полей в кириллице


8-1181160626
Дима_З
2007-06-07 00:10
2008.06.01
Иконки 256Х256, сжатые vista-форматом


15-1208557575
Hero
2008-04-19 02:26
2008.06.01
ishelllink


3-1198765879
LoDr
2007-12-27 17:31
2008.06.01
Firebird и представления


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





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
Английский Французский Немецкий Итальянский Португальский Русский Испанский