Rambler's Top100
Форум: MS ACCESSVBVBA MS OfficeMS SQL server
Новые сообщения: 0000

Форум: MS ACCESS

Вопросы связанные с MS ACCESS

Обновить визитку
Участники «Online»
Все участники

 
 

Доброго времени суток, Посетитель!

вид форума:
Линейный форум Структурный форум

тема: Как заменить Cstr, чтобы работало в ADP?
 
 автор: Аленка   (01.12.2008 в 17:36)   личное сообщение
 
 

Было вот так в MDB и все работало.
В ADP уже не работает, пишет, что не существует такой фукнции Cstr
& "WHERE [NumCode] In (SELECT CStr([Êîä çàïèñè]) FROM t5_Currency)"

Нашла, что Cstr заменяется на фукнцию CONVERT(varchar,Х). Заменила, но теперь пишет сообщение: недопустимое имя столбца "#10".
& "WHERE [NumCode] In (SELECT CONVERT(varchar,[Код записи]) FROM t5_Currency)"
Как сделать правильно?

  Ответить  
 
 автор: osmor   (01.12.2008 в 17:46)   личное сообщение
 
 

при работе с SQL сервером лучше сразу отказаться от русских имен чего бы то ни было
можно вместо convert использовать CAST
http://msdn.microsoft.com/ru-ru/library/ms187928.aspx

  Ответить  
 
 автор: Аленка   (01.12.2008 в 17:57)   личное сообщение
 
 

Всю БД переделывать, чтобы отказаться от русских имен?
Я как-то читала, что русские имена если и будут мешать, то только в определенных случаях. Почитав про эти случаи, я решила, что с ними я вряд ли когда-то столкнусь, хотя зарекаться неблагодарное дело.
Но все же. Я пока не готова столько переделать рад смены русских имен, да и мне так удобнее. Но все равно спасибо за совет.

  Ответить  
 
 автор: Аленка   (01.12.2008 в 18:01)   личное сообщение
 
 

CAST([Код записи] As varchar(10)) тоже выдает ту же самую ошибку.
Что не так делаю?
Как правильно заменить Cstr([Код записи]), чтобы работало в ADP?

  Ответить  
 
 автор: osmor   (01.12.2008 в 18:14)   личное сообщение
 
 

а если вместо [Код записи] написать какое-то поле которое по английски называется? Работает?

  Ответить  
 
 автор: Аленка   (01.12.2008 в 19:16)   личное сообщение
 
 

Нет. пробовала изменить поле КОД ЗАПИСИ на ID. То же самое. Пишет, что неверное поле ID

  Ответить  
 
 автор: KrukVN   (01.12.2008 в 21:16)   личное сообщение
 
 

тренируемся в QA

declare @id int
set @id = 123456
select convert(nvarchar,@id)
select cast(@id as char(10))

и вот здесь:
WHERE [NumCode] In (SELECT CONVERT(varchar,[Код записи]) FROM t5_Currency)

может надо: CONVERT(varchar,[Код записи]) обозвать как-нибудь на вс. пожарный, типа AS NumCd

и это... русские буквы в наименовании полей да еще с пробелами! брррр-жжжуть. простите

  Ответить  
 
 автор: Мюллер   (02.12.2008 в 10:37)   личное сообщение
27 Кб.
 
 

Можно так:
CAST([Код записи]AS char(10)) AS RecCode

Ну и +1 к KrukVN - переделывайте лучше сразу названия с кирилицы на латиницу. Потом проблем вообще не оберетесь.

А про Cast и Convert почитайте эту статью

  Ответить  
 
 автор: Аленка   (02.12.2008 в 17:32)   личное сообщение
 
 

Спасибо за советы. Я читала эту статью. И вроде все правильно делаю, но все равно одна и та же ошибка: недопустимое название столбца.
А насчет русских названий столбцов, я здесь согласна. Просто это столько надо переделывать.ч то мне страшно становится.
Пока трудно решиться. Но судя по всему, придется денек выделить на это дело.

  Ответить  
 
 автор: KrukVN   (02.12.2008 в 18:23)   личное сообщение
 
 

всего лишь 'денек' ???
так чего собственно ждем?

  Ответить  
 
 автор: Аленка   (02.12.2008 в 22:50)   личное сообщение
 
 

Денек - это мои оптимистичные прогнозы. Но по-моему, я так быстро не справлюсь.
40 таблиц, из них 32 основных (и 8 воспомогательных - списки самые необходимые, остальные списки сделаны через списки значений).
150 запросов (боже мой!) - хотя по идее запросы на основе таблиц должны сами исправить, да? ща попробую. Запросы на основе запросов точно сами не переделаются, как я понимаю.
Но самое главное - 304 формы. вот в них точно ведь придется обновить названия всех столбцов. и я не представляю, как это все делать.
поэтому я этого так и боюсь. в принципе, если без отдыха, то за денег справлюсь

А вот с CAST я так и не разобралась, к сожалению. Все равно пишет: "недопустимое название столбца".

Ну ведь я правильно сделала:
и поле даже переименовывала на англицкий. и Пробовала назвать и как NumCd.


Вот этот запрос (последний вариант). Всегда пишет: недопустимое имя столбца. В чем ошибка?
CurrentProject.Connection.Execute "INSERT INTO [Valutes] ( [IDv], [Course], Date) " _
& "select NumCode , Value , " & Format(dateMax, "\#mm\/dd\/yyyy\#") _
& " FROM Valute " _
& "WHERE [NumCode] In (SELECT CAST([IDvv]AS char(10)) AS RecCode FROM ValutesCourse)"
CurrentProject.Connection.Execute "drop table Valute"

  Ответить  
 
 автор: osmor   (03.12.2008 в 09:39)   личное сообщение
 
 

Дело в Format(dateMax, "\#mm\/dd\/yyyy\#")
 
CurrentProject.Connection.Execute "INSERT INTO [Valutes] ( [IDv], [Course], Date ) " _
        & "select NumCode , cast(replace(Value,',','.') as money) , cast('" & dateMax & "' as datetime) FROM Valute " _
        & "WHERE [NumCode] In (SELECT cast([IDvv] as char(10)) FROM ValutesCourse)"


Называть столбец "Date" тоже не самое правильное решение

  Ответить  
 
 автор: Аленка   (03.12.2008 в 11:24)   личное сообщение
 
 

Спасибо

  Ответить  
 
 автор: Кабан   (03.12.2008 в 12:08)   личное сообщение
 
 

по поводу оптимистичности прогнозов по модернизации БД на SQL сервере
я бы сделал dump базы данных и в обычном редакторе worpad, например, обычным Ctrl-H (или Ctrl-R) переименовал бы названия полей.
затем запустил бы этот dump базы и создал бы уже обновленную структуру БД :)
где-то так :)

  Ответить  
HiProg.com - Технологии программирования
Rambler's Top100 TopList