|
|
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Как начинающий, вопрос может быть из ряда тупых, так что лучше сядьте : из процедуры вызываю свою функцию авторSub New_InC () ... ... GET_ID_FROM_NAME (фргументи) ... ... в функции Код: plaintext Код: plaintext Код: plaintext Код: plaintext и в процедуре, сразу после вызова функции, проверяется: Код: plaintext таких точек в этой процедуре много (невозможно действия поставить в цикл). Так вот существует или нет в VB возможность, поместить код этой функции в этой процедуре (ясно, она уже не будет называться функцией), чтобы не проверять каждый раз Код: plaintext Т.е. Можно или нет организовать из процедуры: вызвать место в этой же процедуре с последующим возвратом в точку вызова. Спасибо заранее! ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2006, 16:02 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Новатор, схожую с требуемой функциональность можно получить, используя полиморфизм. Пусть есть абстрактный класс IMyMethod: Код: plaintext 1. 2. 3. класс CMyMethod1: Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. 20. 21. 22. 23. Надеюсь, идея ясна. Но не факт, что быстрее будет работать, чем Select Case. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2006, 16:47 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Может что то в этом роде. В конце процедуры делаем проверку значения, которое она могла бы вернуть, и если оно не то которое нужно, выполняем действия еще раз... Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. 12. 13. 14. 15. 16. 17. 18. 19. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2006, 16:54 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Новаториз процедуры вызываю свою функцию авторSub New_InC () ... ... GET_ID_FROM_NAME (фргументи) ... ... в функции Код: plaintext Код: plaintext Код: plaintext Код: plaintext и в процедуре, сразу после вызова функции, проверяется: Код: plaintext Если я правильно понял, то нахрена эту функцию вызывать 2 раза? Достаточно 1 раз. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Опять не пойму. Зачем несколько раз в одной процедуре вызывать одну и туже функцию? Одного раза недостаточно? Или вы не знаете про оператор Else? ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2006, 17:27 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Пока читал первые два ответа, еще сомневался, но когда третий и в ту же сторону понял, что наверно, неправильно поставил вопрос. Пример: Sub New_InC () r.Fields("[SOURCE]") = GET_ID_FROM_NAME("SELECT ID FROM OBJ WHERE name = '" & Arre_Flex(8, i) & "' and Left(ID,3)='par'") If Trim(r.Fields("[SOURCE]")) = "False" Then GoTo Loop1: r.Fields("[valuta]") = GET_ID_FROM_NAME("SELECT ID FROM curs WHERE name = '" & Arre_Flex(9, i) & "' and current = True") If Trim(r.Fields("[valuta]")) = "False" Then GoTo Loop1: r.Fields("[valuta (Zir)]") = GET_ID_FROM_NAME("SELECT ID FROM curs WHERE name = '" & Arre_Flex(13, i) & "' and home = True") If Trim(r.Fields("[valuta (Zir)]")) = "False" Then GoTo Loop1: r.Fields("[Group]") = GET_ID_FROM_NAME("SELECT ID FROM accessories WHERE name = '" & Arre_Flex(14, i) & "' and owner= 'Groups'") If Trim(r.Fields("[Group]")) = "False" Then GoTo Loop1: r.Fields("[qveGroup]") = GET_ID_FROM_NAME("SELECT ID FROM accessories WHERE name = '" & Arre_Flex(15, i) & "' and owner= 'SubGroups'") If Trim(r.Fields("[qveGroup]")) = "False" Then GoTo Loop1: r.Fields("[Amnt]") = GET_ID_FROM_NAME("SELECT ID FROM accessories WHERE name = '" & Arre_Flex(22, i) & "' and owner= 'Amnt'") If Trim(r.Fields("[Amnt]")) = "False" Then GoTo Loop1: r.Fields("[mimRebi]") = GET_ID_FROM_NAME("SELECT ID FROM OBJ WHERE name = '" & Arre_Flex(23, i) & "' and Left(ID,3)='obi'") If Trim(r.Fields("[mimRebi]")) = "False" Then GoTo Loop1: r.Fields("[Autor]") = GET_ID_FROM_NAME("SELECT ID FROM person WHERE name = '" & Arre_Flex(24, i) & "'") If Trim(r.Fields("[Autor]")) = "False" Then GoTo Loop1: r.Fields("[Producer]") = GET_ID_FROM_NAME("SELECT ID FROM producer WHERE name = '" & Arre_Flex(25, i) & "'") If Trim(r.Fields("[Producer]")) = "False" Then GoTo Loop1: r.Fields("[Color]") = GET_ID_FROM_NAME("SELECT ID FROM accessories WHERE name = '" & Arre_Flex(31, i) & "' and owner= 'Color'") If Trim(r.Fields("[Color]")) = "False" Then GoTo Loop1: и т.д. ... ... End Sub Private Function GET_ID_FROM_NAME(Query_String As String) As Boolean Dim db As DAO.Database, rID As DAO.Recordset Set rID = db.OpenRecordset(Query_String) If rID.RecordCount <> 1 Then MsgBox "Error in Table! We have " & rID.RecordCount & " records " & Chr(13) & "It is dangerous mistake. Please, ask your Administrator for this error!!" GET_ID_FROM_NAME = False : rID.Close: Set rID = Nothing: Exit Function End If taram.. taram... ... ... GET_ID_FROM_NAME = rID.Fields(0) rID.Close: Set rID = Nothing End Function Второе разместить в теле первого, чтоби в первом не делать дополнительние проверки Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 02.05.2006, 18:46 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Может так: Код: 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. что здесь происходит вызывается функция GET_ID_FROM_NAME в нее передается по ссылке нужное поле функция записывает свой результат в это поле если функция возвращает false тогда идем в Loop1 ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 11:45 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
1. Для чего такая сложная конструкция, если функция GET_ID_FROM_NAME возращает логическое значение? Нафига Trim? Код: plaintext 1. Не проще ли будет так? Код: plaintext 2. Чтобы не делать кучу сравнений в процедуре, наверное, нужно так сделать. Здесь же или ранее надо подключаться к БД. А рекордсеты открывать и закрывать функцией, как у вас и сделано. Код: plaintext 1. 2. 3. 4. 5. 6. 7. 8. 9. 10. 11. Поправьте меня спецы, если я не прав. ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 12:31 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Пардон, Код: plaintext Код: plaintext ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 15:51 |
|
||
|
Поместить код функции в процедуре
|
|||
|---|---|---|---|
|
#18+
Немного пояснении, в добавок: эта функция переводит имя, находящееся в определенных ячейках FlexGrid-а (который “Bounded” на массив Arre_Flex), в соответствующие ID, из соответствующих таблиц. В этих таблицах разрешается повторение имен (но не ID), Но если имя повторяется, обработка ситуации происходит по другому сценарию, код которого как раз находится в Loop1: ... |
|||
|
:
Нравится:
Не нравится:
|
|||
| 03.05.2006, 16:07 |
|
||
|
|

start [/forum/topic.php?fid=60&fpage=282&tid=2165934]: |
0ms |
get settings: |
6ms |
get forum list: |
11ms |
check forum access: |
2ms |
check topic access: |
2ms |
track hit: |
49ms |
get topic data: |
7ms |
get forum data: |
2ms |
get page messages: |
58ms |
get tp. blocked users: |
1ms |
| others: | 248ms |
| total: | 386ms |

| 0 / 0 |
