Форум по Delphi программированию

Delphi Sources



Вернуться   Форум по Delphi программированию > Все о Delphi > [ "Начинающим" ]
Ник
Пароль
Регистрация <<         Правила форума         >> FAQ Пользователи Календарь Поиск Сообщения за сегодня Все разделы прочитаны

Ответ
 
Опции темы Поиск в этой теме Опции просмотра
  #1  
Старый 09.12.2015, 04:41
redoks redoks вне форума
Прохожий
 
Регистрация: 02.12.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию Апострофы при запросе вставки в Excel (ADOQuery, ODBC)

Делаю SQL запрос INSERT.
В результате в файл XLS вставляются значения с апострофом.
Как это исправить?

Причем если в файле уже есть корректные записи, то вставляет последующие нормально, если нет - то с апострофом.

Создал файл, если его нет:
Код:
              XL.WorkBooks.add;
              XL.Sheets[1].Name := 'New';
                            XL.Cells(1,1) := 'ID';
                            XL.Columns[1].NumberFormat := 0;

Пытаюсь записать туда данные:
Код:
ADOQuery2.SQL.Add('insert into [New$] (ID) values (' + newid + ')');

newid - integer

не помогает да же указание типа:
Код:
ADOQuery2.SQL.Add('insert into [New$] (ID) values (int(' + newid + '))');

Если newid = 5, то в Excel вставляет '5

Появляется апостроф.
Хотя преобразования типа в запросе есть.
При создании файла указал формат данных столбца.
Ответить с цитированием
  #2  
Старый 09.12.2015, 06:20
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Вроде вообще не должно компилиться это
Код:
ADOQuery2.SQL.Add('insert into [New$] (ID) values (' + newid + ')');
поскольку добавляется строка, а прямая вставка типа integer не пройдёт, нужен преобразователь IntToStr
Ответить с цитированием
  #3  
Старый 09.12.2015, 07:55
redoks redoks вне форума
Прохожий
 
Регистрация: 02.12.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию ыф

Цитата:
Сообщение от Alegun
Вроде вообще не должно компилиться это
Код:
ADOQuery2.SQL.Add('insert into [New$] (ID) values (' + newid + ')');
поскольку добавляется строка, а прямая вставка типа integer не пройдёт, нужен преобразователь IntToStr

Код:
ADOQuery2.SQL.Add('insert into [New$] (ID) values (int(' + inttostr(newid) + '))');

Проблема то не в этом
Ответить с цитированием
  #4  
Старый 09.12.2015, 10:01
Аватар для Alegun
Alegun Alegun вне форума
LMD-DML
 
Регистрация: 12.07.2009
Адрес: Богородское
Сообщения: 3,025
Версия Delphi: D7E
Репутация: 1834
По умолчанию

Цитата:
Сообщение от redoks
...Проблема то не в этом
Тогда попробуйте ввернуть дефолтный формат
Код:
XL.Columns[1].NumberFormat := '';
Ответить с цитированием
  #5  
Старый 09.12.2015, 10:17
redoks redoks вне форума
Прохожий
 
Регистрация: 02.12.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

нет. так не работает.

Еще я попытался передавать ID через параметр с типом ftInteger и ftFloat.
Не сработало.

После каких-то манипуляций(а их было много разных), я перестал видеть апострофы при открытии Excel, но тем не менее вставляемые числа преобразуются в числа сохраненные как текст.
Ответить с цитированием
  #6  
Старый 11.12.2015, 03:32
redoks redoks вне форума
Прохожий
 
Регистрация: 02.12.2015
Сообщения: 8
Версия Delphi: Delphi 7
Репутация: 10
По умолчанию

Если я вручную вставлю число в XLS, и проставлю формат ячейки "число".
Селект возвращает - число.

Последующие INSERT вставляют число.

Если я вручную проставлю формат, но без вставки числа.
Он мне возвращает String.

Последующие INSERT вставляют строку.


Если я через OLE проставлю формат, и вставляю число.

Последующие INSERT вставляют число.

Все свелось к тому, что ошибочно работает только с первой записью и если первая запись некорректно завелась, то последующий то же заведутся не правильно.
Ответить с цитированием
Ответ


Delphi Sources

Опции темы Поиск в этой теме
Поиск в этой теме:

Расширенный поиск
Опции просмотра

Ваши права в разделе
Вы не можете создавать темы
Вы не можете отвечать на сообщения
Вы не можете прикреплять файлы
Вы не можете редактировать сообщения

BB-коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.
Быстрый переход


Часовой пояс GMT +3, время: 13:54.


 

Сайт

Форум

FAQ

RSS лента

Прочее

 

Copyright © Форум "Delphi Sources" by BrokenByte Software, 2004-2023

ВКонтакте   Facebook   Twitter