На первый взгляд все верно, но - ошибка. Хелп плиз...

Программирование на Visual Basic, главный форум. Обсуждение тем программирования на VB 1—6.
Даже если вы плохо разбираетесь в VB и программировании вообще — тут вам помогут. В разумных пределах, конечно.
Правила форума
Темы, в которых будет сначала написано «что нужно сделать», а затем просьба «помогите», будут закрыты.
Читайте требования к создаваемым темам.
compositum
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 07.05.2006 (Вс) 15:23
Откуда: Санкт-Петербург

На первый взгляд все верно, но - ошибка. Хелп плиз...

Сообщение compositum » 07.05.2006 (Вс) 15:33

Код: Выделить всё

Option Compare Database

Enum Поставщик
Генподрядчик = 1
Субподрядчик = 2
End Enum

Enum ЕдиницыИзмерения
м3 = "м3"
м2 = "м2"
м = "м"
шт = "шт"
кг = "кг"
т = "т"
комплект = "компл."
End Enum

Type Запись
№ПП As Long
Материал As String
Марка As String
ЕдИзм As ЕдиницыИзмерения
Количество As Double
Поставка As Поставщик
End Type
Sub example()
'MsgBox ("Привет")

Dim Строка As Запись
Строка.№ПП = 1
Строка.Поставка = 2

End Sub

Выдает ошибку на строчке "Enum ЕдиницыИзмерения". Почему? Синтаксис, вроде как верен.... Очередность не та?

BV
Thinker
Thinker
Аватара пользователя
 
Сообщения: 3987
Зарегистрирован: 12.09.2004 (Вс) 0:55
Откуда: Молдавия, г. Кишинёв

Сообщение BV » 07.05.2006 (Вс) 15:50

Думаю, компилятор заслужит медаль, если выполнит этот код.
const char *out = "|*0>78-,+<|"; size_t cc = char_traits<char>::length(out);
for (size_t i=0;i<cc;i++){cout<<static_cast<char>((out[i]^89));}cout<<endl;

Amed
Алфизик
Алфизик
 
Сообщения: 5346
Зарегистрирован: 09.03.2003 (Вс) 9:26

Сообщение Amed » 07.05.2006 (Вс) 15:57

compositum, никогда так не делай :)

Все названия переменных, функций и прочего должны быть на английском языке. Если нужны пояснения, пиши рядом комментарии.

Синтаксис не верен, в том все и дело. Вот так будет работать.
Код: Выделить всё
Enum ЕдиницыИзмерения
м3
м2
м
шт
кг
т
комплект
End Enum

compositum
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 07.05.2006 (Вс) 15:23
Откуда: Санкт-Петербург

Сообщение compositum » 07.05.2006 (Вс) 21:20

спасибо, правда я уже и сам разобрался. все, равно спасибки... тады вопрос такой:
Код: Выделить всё

Option Explicit

'Создаю перечисляемый тип для допустимых единиц измерения
Enum ЕдИзм
м
м2
м3
шт
комплект
кг
т
л
тыс_шт
End Enum

'Создаю перечисляемый тип для указания поставщиков, именуемых в договоре как "генподрядчик"
'и "субподрядчик"
Enum Поставка
Генподрядчик
Субподрядчик
End Enum

'Создаю тип данных, содержащий в себе всю информацию для одной единицы записи
Type Запись
№_по_ведомости As Long
Наименование_материала As String
Тип_Марка_по_ГОСТу As String
Единицы_измерения As ЕдИзм
Количество As Single
Поставщик As Поставка
End Type
Sub вывести_данные_по_записи()
Dim Строка As Запись, изм As String, пост As String
Строка.№_по_ведомости = 1
Строка.Наименование_материала = "Дизельное топливо, бензин"
Строка.Тип_Марка_по_ГОСТу = ""
Строка.Единицы_измерения = тыс_шт
Строка.Количество = 777
Строка.Поставщик = Генподрядчик
Select Case Строка.Единицы_измерения
Case 0
изм = "м"
Case 1
изм = "м2"
Case 2
изм = "м3"
Case 3
изм = "шт"
Case 4
изм = "комплект"
Case 5
изм = "кг"
Case 6
изм = "т"
Case 7
изм = "л"
Case 8
изм = "тыс. шт."
End Select
Select Case Строка.Поставщик
Case 0
пост = "Генподрядчика"
Case Else
пост = "Субподрядчика"
End Select

MsgBox ("Строка №" & Строка.№_по_ведомости & ": """ & Строка.Наименование_материала & """ " _
& Строка.Тип_Марка_по_ГОСТу & " " & Строка.Количество & " " & изм & " " _
& "   поставка " & пост)

End Sub




Мне не нравится пользоваться в этом случае операторами CASE. Можно ли в обход показать в MSGBOXe не числовое значение, а то, что у меня получается с CASE, иными словами - можно ли преобразовать тип данных так, чтобы сразу получать тот же результат, что и выше?

compositum
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 07.05.2006 (Вс) 15:23
Откуда: Санкт-Петербург

Сообщение compositum » 07.05.2006 (Вс) 21:25

Amed спасибо, плиз, ответь и на след. вопрос, если не сложно... ок?
Amed

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.05.2006 (Пн) 3:33

RTFM

Choose()
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

compositum
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 07.05.2006 (Вс) 15:23
Откуда: Санкт-Петербург

Сообщение compositum » 08.05.2006 (Пн) 10:51

GSerg

Прочел я про эту функцию, но.... честно говоря так и не понял для чего она. :( ,
Правда у меня работает выражение:
Код: Выделить всё

MsgBox (Choose(1, Строка.Единицы_измерения))

Но касательно него я сам не понял, что написал в нем... Да и результат все так же не тот, что мне нужен: выдает число, а не текст , подставляемый мной через case... :(

GSerg
Шаман
Шаман
 
Сообщения: 14286
Зарегистрирован: 14.12.2002 (Сб) 5:25
Откуда: Магадан

Сообщение GSerg » 08.05.2006 (Пн) 10:54

:roll:

Choose(Строка.Единицы_измерения, "м", "м2", "м3", ...)
Как только вы переберёте все варианты решения и не найдёте нужного, тут же обнаружится решение, простое и очевидное для всех, кроме вас

compositum
Начинающий
Начинающий
Аватара пользователя
 
Сообщения: 18
Зарегистрирован: 07.05.2006 (Вс) 15:23
Откуда: Санкт-Петербург

Сообщение compositum » 08.05.2006 (Пн) 11:09

Amed
вот я написал иначе, но все равно пришлось прописывать значения, пусть даже в массив...
Код: Выделить всё

Option Explicit

'Создаю перечисляемый тип для допустимых единиц измерения
Enum ЕдИзм
м
м2
м3
шт
комплект
кг
т
л
тыс_шт
End Enum

'Создаю перечисляемый тип для указания поставщиков, именуемых в договоре как "генподрядчик"
'и "субподрядчик"
Enum Поставка
Генподрядчик
Субподрядчик
End Enum

'Создаю тип данных, содержащий в себе всю информацию для одной единицы записи
Type Запись
№_по_ведомости As Long
Наименование_материала As String
Тип_Марка_по_ГОСТу As String
Единицы_измерения As ЕдИзм
Количество As Single
Поставщик As Поставка
End Type
Sub вывести_данные_по_записи()
Dim Строка As Запись, изм(8) As String, пост As String
Строка.№_по_ведомости = 1
Строка.Наименование_материала = "Дизельное топливо, бензин"
Строка.Тип_Марка_по_ГОСТу = ""
Строка.Единицы_измерения = комплект
Строка.Количество = 777
Строка.Поставщик = Генподрядчик
изм(0) = "м"
изм(1) = "м2"
изм(2) = "м3"
изм(3) = "шт."
изм(4) = "компл."
изм(5) = "кг"
изм(6) = "т"
изм(7) = "л"
изм(8) = "тыс. шт."
Select Case Строка.Поставщик
Case 0
пост = "Генподрядчика"
Case Else
пост = "Субподрядчика"
End Select

MsgBox ("Строка №" & Строка.№_по_ведомости & ": """ & Строка.Наименование_материала & """ " _
& Строка.Тип_Марка_по_ГОСТу & " " & Строка.Количество & " " & изм(Строка.Единицы_измерения) & " " _
& "   поставка " & пост)

End Sub


Вернуться в Visual Basic 1–6

Кто сейчас на конференции

Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 132

    TopList  
cron