powered by simpleCommunicator - 2.0.61     © 2026 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DateTime и DBF
7 сообщений из 7, страница 1 из 1
DateTime и DBF
    #34347658
dronnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Доброго всем времени суток!!!
Есть такой вопрос: выкачиваю данные с SQL Server 2000 в dbf. Dbf уже создана и имеет свои поля.
Таблица большая (на сервере), где то >300.000 записей
Вот код:
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
36.
37.
38.
39.
40.
41.
42.
43.
44.
OleDbConnection ole_constr = new OleDbConnection("Provider=Microsoft.Jet.OLEDB.4.0;" +
                                            "Data Source=" + txtUploadBack.Text + ";Extended Properties=dBase IV;");

            OleDbCommand ole_cmd = new OleDbCommand(); 
            cn_SQL = new SqlConnection(con_str); 
            cmd_SQL = new SqlCommand("select * from uchet_data",cn_SQL);
            cn_SQL.Open();
            ole_constr.Open();  
            sql_dr = cmd_SQL.ExecuteReader(CommandBehavior.CloseConnection);
            while (sql_dr.Read())
            {
                bu.Length =  0 ;
                bu.Append("INSERT INTO AOXXXXXX.DBF VALUES(");
                for (int i =  0 ; i < sql_dr.FieldCount; i++)
                {
                    switch (sql_dr.GetFieldType(i).ToString())
                    {
                        case "System.Int32":
                            bu.Append(sql_dr.GetInt32(i));
                            bu.Append(", "); 
                            break;
                        case "System.String":
                            bu.Append("'"); 
                            bu.Append(sql_dr.GetString(i));
                            bu.Append("'"); 
                            bu.Append(", ");
                            break;
                        case "System.DateTime":
                            bu.Append(sql_dr.GetDateTime(i));//В данном случае дата получается  01 . 12 . 1952   00 : 00 : 00 
                            ....................
                               
                        case "System.Byte":
                            bu.Append(sql_dr.GetByte(i));
                            bu.Append(", "); 
                            break;
                    }
                    
                }//конец For
                    bu.Append(")");
                    strSQL = bu.ToString();
                    ole_cmd.CommandText = strSQL;
                    ole_cmd.Connection = ole_constr;
                    ole_cmd.ExecuteNonQuery();  
            }//Конец While
Основные данные заносятся без проблем. Проблема в поле Date в dbf дата отображается как 12/30/1899... Как быть, подскажите???
...
Рейтинг: 0 / 0
DateTime и DBF
    #34347811
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Переделайте все под запрос с параметрами и будет Вам счастье
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
DateTime и DBF
    #34347858
dronnix
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ex_SoftПеределайте все под запрос с параметрами и будет Вам счастье
_________________
"Helo, word!" - 17 errors 56 warnings

Спаибо за мнение! Параметры это здорово, но когда полей 50 на каждое поле параметр прописывать??? Просто в данном случае в цикле формируется указанная строка и все по идее отлично отрабатыввает, но вот Date.... Да и потом ведь на выходе сервер выдает дату в другом формате, так называемом "англицком". Просто среды выполнения студии его показывает уже в русском виде и во всех переменных он участвует как наш формат.
...
Рейтинг: 0 / 0
DateTime и DBF
    #34347926
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
dronnix
Параметры это здорово, но когда полей 50 на каждое поле параметр прописывать???

А кто Вам мешает аналогично в цикле добавлять параметры? Согласен - это немного муторно... Но зато Вы будете иметь унифицированную весчЪ и уйдете от заморочек из-за:
1. Попадания ' в char'ах
2. Попадания , в numeric'ах (локальные установки DecimalSeparator при преобразовании в string)
3. Локальных установок формата даты

P.S. Если же Вам, все-таки, хочеться поморочиться - попробуйте позаключать char'овское выражение даты в {} , ' ; поиграйтесь DateSeparator'ом ( / , . ), и форматом YYYY/MM/DD etc...

P.S.S. Не оверквотьте , pls...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
DateTime и DBF
    #34348083
Фотография Ex_Soft
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
ышо один вариант

P.S. Ну... И про cast не забывайте...
_________________
"Helo, word!" - 17 errors 56 warnings
...
Рейтинг: 0 / 0
DateTime и DBF
    #34372650
Sergey Ch
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Если использовать VFP OleDBProvider, то можно в строку включить функцию DATE() or DATETIME()...
...
Рейтинг: 0 / 0
DateTime и DBF
    #34375191
Suzeren
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Столкнулся с тем же самым, только у меня при в ставке в поле типа Date в DBF процедура ругалась на несоответствие типа, если в параметр отправлять DateTime.Now. А вот зато если послать DateTime.Today, то всё хорошо. Вывод какой? Не правильно воспринимается формат даты

01.12.1952 00:00:00

Ему надо именно 01.12.1952. Попробуй пререконверитровать просто....
...
Рейтинг: 0 / 0
7 сообщений из 7, страница 1 из 1
Форумы / ADO.NET, LINQ, Entity Framework, NHibernate, DAL, ORM [игнор отключен] [закрыт для гостей] / DateTime и DBF
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]