Имя: Пароль:
1C
1С v8
Как убрать слева и справа пробелы из ADO в Access
0 EvgeniuXP
 
08.07.16
21:09
Через ADO сохраняю в access, колонки с типом char сохраняются с пробелами на конце, хотя из 1С передаю в value без пробелов.
Как исправить?
1 КМ155
 
08.07.16
21:20
(0) форум, как обычно, должен угадать пишешь ты их через update или через рекордсет ?
2 EvgeniuXP
 
08.07.16
21:27
через ADODB.Command

INSERT INTO [ИмяТаблицы] VALUES ('" + СокрЛП(Выборка.Наименование) + "')
3 Fram
 
08.07.16
21:38
(0) погуглил. нет в эксессе типа данных char!
4 EvgeniuXP
 
08.07.16
21:51
(3) это не у Access выставляем, а у:

Command = Новый COMОбъект("ADODB.Command");
Command.ActiveConnection = Connection;

Command.CommandText = "CREATE TABLE [МояТаблица]
|(Символьный char(255), Дата date, Целый int, Дробный float)";
Command.Execute();
5 EvgeniuXP
 
08.07.16
21:52
Пробовал char(0) ставить - выдает ошибку
6 NorthWind
 
08.07.16
21:52
а varchar не пробовали?
7 EvgeniuXP
 
08.07.16
21:53
нет
8 NorthWind
 
08.07.16
21:55
ну попробуйте varchar или text. Если вы не хотите, чтобы строка дополнялась пробелами, надо тип переменной длины. Я много работал с аксесом, но просто не было необходимости создавать таблицы через create table, весь DDL всегда конструктором делал
9 NorthWind
 
08.07.16
21:55
10 EvgeniuXP
 
08.07.16
21:57
спс, в понедельник опробую! вечером отпишусь. А булево как написать? Boolean пробовал, тоже не получилось, хотя можно и числом передать 1 и 0
11 EvgeniuXP
 
08.07.16
22:07
bit - булево, varchar тоже есть - похоже то что нужно
12 NorthWind
 
08.07.16
22:10
ну да, мне тоже так подумалось - по аналогии с access. Я полез погуглить, но вы меня опередили. Поиск рулит!
13 NorthWind
 
08.07.16
22:10
* по аналогии с MSSQL
14 Fram
 
08.07.16
22:10
(4) Ну так с этого надо было начинать. char он же фиксированной длины. varchar юзайте
15 КМ155
 
08.07.16
22:18
(2) открой рекодсет и обнови через него
будет явное преобразование типов
16 NorthWind
 
09.07.16
06:55
(15) если внимательно посмотреть (2), то видно, что там делается непараметризованный запрос и гарантированно очищенная от пробелов строка передаётся в качестве константы. Это идеальный вариант - мы сразу можем быть точно уверены что со стороны приложения (и ado, потому что голый command) все в порядке. Остаётся БД.
17 КМ155
 
09.07.16
08:31
(16) попробуй передать таким образом дату и ты поймёшь свою ошибку
18 EvgeniuXP
 
09.07.16
10:05
(17) а что с датой не так? Передавал - передается как дата и со временем и без времени, вот пустую если нужно передавать то надо null подставлять вместо Дата(1,1,1), иначе получим 0100.01.01 - как-то так, пишу на память
19 mistеr
 
09.07.16
10:28
(18) Чуть другие настройки локали - и дата уже не дата. Нужно передавать в параметрах.
20 NorthWind
 
09.07.16
13:01
(16), (18) конкретно для JetSQL можно использовать литерал даты #MM/DD/YYYY#. Независимо от локали местоположение компонентов в нем всегда трактуется по американскому стандарту даты месяц/день/год (http://allenbrowne.com/ser-36.html). Хотя можно и в параметр передать, только надо знать как хранится дата в Access (8-байтовое дробное число) и передать так, как он хочет видеть.
21 EvgeniuXP
 
11.07.16
19:46
Varchar убрал пробелы! Спс!