Главная страница
    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.066 c
2-1210427273
Werewolf-Prankster
2008-05-10 17:47
2008.06.01
Создание Label-ов с помощью TLabel.create


15-1208258400
ламо777
2008-04-15 15:20
2008.06.01
Производительность на удаленном сервере


2-1210096869
Dron2
2008-05-06 22:01
2008.06.01
Если ошибка соединения - закрыть приложение. Как это сделать?


4-1190040221
Nikfel
2007-09-17 18:43
2008.06.01
Как вывести окно открыть с помощью.


6-1188284933
lehich
2007-08-28 11:08
2008.06.01
TSocketConnection





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