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

Форум: MS ACCESS

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

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

 
 

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

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

тема: Помогите с типом данных разобраться
 
 автор: час   (15.06.2011 в 15:56)   личное сообщение
 
 

Я тута функцию мастрячу и хотел было ею воспользоваться, но как передать тип создаваемого поля - "логическое поле" ?


Public Function FUN_ADD_FIELD_NEW(CONNECT As Connection, _
STR_TABLE_NAME As String, _
STR_FIELD_NAME As String, _
STR_FIELD_TYP As String) As Boolean
' добавление поля к таблице.
' "MONEY" "TEXT(25)", "DOUBLE"
Dim adoxCat As Object
Dim adoxTbl As Object

    
   On Error GoTo FUN_ADD_FIELD_NEW_Error
'----------------------------------------------------------------------------------
    
FUN_ADD_FIELD_NEW = True

Set adoxCat = CreateObject("ADOX.Catalog")
Set adoxTbl = CreateObject("ADOX.Table")

Set adoxCat.ActiveConnection = CONNECT

    CONNECT.Execute "ALTER TABLE " & STR_TABLE_NAME & "" _
   & " ADD COLUMN " & STR_FIELD_NAME & " " & STR_FIELD_TYP

Set adoxCat = Nothing
Set adoxTbl = Nothing

'----------------------------------------------------------------------------------
   On Error GoTo 0
   Exit Function
FUN_ADD_FIELD_NEW_Error:
MsgBox "Возможно база указана не верно!!!   Или изменения уже произведены."
FUN_ADD_FIELD_NEW = False
End Function

  Ответить  
 
 автор: час   (15.06.2011 в 16:59)   личное сообщение
 
 

Бестолоч - bit попробуй

  Ответить  
 
 автор: час   (15.06.2011 в 17:00)   личное сообщение
 
 

Это не то, - мне флажок нужен!

  Ответить  
 
 автор: snipe   (15.06.2011 в 17:04)   личное сообщение
 
 

Хорошо поговорить с умным человеком - с самим собой

  Ответить  
 
 автор: час   (15.06.2011 в 17:05)   личное сообщение
 
 

Ды он - пургу гонит - какой нафиг умный человек - болтун

  Ответить  
 
 автор: час   (15.06.2011 в 17:06)   личное сообщение
 
 

Снайпер, а ты не в курсе этой тематики?
==================================
Я обгуглился - ответа нету.......

  Ответить  
 
 автор: Силblч   (15.06.2011 в 17:24)   личное сообщение
 
 

"YESNO"?

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

Пробовал YES/NO - нихтуя
Ани канечно логические, но не флажки
YESNO, BIT?
Не помогают

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

неее - не в курсе
вот нарыл
http://ms.by.ru/HTML/66.htm
возможно что тип adBoolean

  Ответить  
 
 автор: час   (15.06.2011 в 17:35)   личное сообщение
 
 

adBoolean - щас попробываю..

  Ответить  
 
 автор: час   (15.06.2011 в 17:38)   личное сообщение
66 Кб.
 
 

НЕА

  Ответить  
 
 автор: Силblч   (15.06.2011 в 17:59)   личное сообщение
 
 

ну хз :)) я бы в хелпе порылся бы ;))

  Ответить  
 
 автор: час   (15.06.2011 в 18:24)   личное сообщение
 
 

Я там зарылся уже

  Ответить  
 
 автор: Анатолий (Киев)   (15.06.2011 в 18:24)   личное сообщение
 
 

Не знаю, где у вас находятся таблицы, но в Аксе за отображение поля в виде флажка нужно создать у него дополнительное свойство "DisplayControl" со значением 106 (acCheckBox).
В конструкторе таблицы, в свойствах полей это значение "Флажок" в поле "Тип элемента управления" на вкладке "Подстановка".

С DAO это можно сделать методом CreateProperty.

  Ответить  
 
 автор: час   (15.06.2011 в 18:28)   личное сообщение
22 Кб.
 
 

Таблица в Access.
Функция в VB6.

  Ответить  
 
 автор: час   (15.06.2011 в 18:36)   личное сообщение
 
 


Вызывать, например, так:
 SetObjectProperty  CurrentDB.TableDefs("MyTable").Fields("MyFields"),"DisplayControl", dbInteger, acCheckBox
 
 
 Public Function SetObjectProperty(Obj As Object, strPropertyName As String, _
  intPropertyType As Integer, varPropertyValue As Variant) As Boolean
 On Error GoTo Error_SetObjectProperty
     Dim prp As DAO.Property
 
     Obj.Properties(strPropertyName) = varPropertyValue
     SetObjectProperty = True
 
 Exit_SetObjectProperty:
 On Error Resume Next
     Set prp = Nothing
     Exit Function
 
 Error_SetObjectProperty:
     Select Case Err.Number
     Case 3270           'Свойство не найдено
         Set prp = Obj.CreateProperty(strPropertyName, intPropertyType, varPropertyValue)
         Obj.Properties.Append prp
         Obj.Properties.Refresh
         Resume Next
     Case Else
         MsgBox "Error #" & Err.Number & " in SetObjectProperty: " & vbCrLf & Err.Description
         SetObjectProperty = False
     End Select
     Resume Exit_SetObjectProperty
 End Function
 
 ---
 Serge Gavrilov
 http://accesstools.narod.ru

  Ответить  
 
 автор: час   (15.06.2011 в 18:40)   личное сообщение
 
 

Осталось сообразить как это прикрутить к первой функции топика....
CurrentDb.TableDefs("TBLSP_SPR").Fields("поле для которого нужен флажок").Properties("DisplayControl") = CInt(acCheckBox)

  Ответить  
 
 автор: Силblч   (15.06.2011 в 18:48)   личное сообщение
 
 

хз я так делал :)

'-- будем дописывать по мере надобности :)
'-- http://allenbrowne.com/func-DAO.html
Public Function addLinkedColumn(tbn$, cnam$, ctyp$, defValue, Optional withDrop% = 0)
Dim db1 As dao.Database, isFieldYes%
On Error GoTo err123
    isFieldYes = 0
    Set db1 = OpenDatabase(Split(CurrentDb.TableDefs(tbn).Connect, "=")(1))
    On Error Resume Next
    If db1.TableDefs(tbn).Fields(cnam).Name = cnam Then
        isFieldYes = 1
        If withDrop <> 0 And Err = 0 Then
            Err = 0
            db1.Execute "ALTER TABLE [" & tbn & "] DROP COLUMN [" & cnam & "] ", dbFailOnError
            If Err = 0 Then
                isFieldYes = 0
            Else
                MsgBox "Не удалось выполнить изменения" & vbCrLf & Error & vbCrLf & iDevelop, , "addLinkedColumn:dropcolumn"
            End If
        End If
    End If
    On Error GoTo err123
    If isFieldYes = 0 Then
        db1.Execute "ALTER TABLE [" & tbn & "] ADD COLUMN [" & cnam & "] " & ctyp, dbFailOnError
        Select Case LCase(ctyp)
        Case "yesno"
            db1.TableDefs(tbn).Fields(cnam).DefaultValue = Nz(defValue, 0)
            Call SetPropertyDAO(db1.TableDefs(tbn).Fields(cnam), "DisplayControl", dbInteger, CInt(acCheckBox))
        End Select
    End If
    CurrentDb.TableDefs(tbn).RefreshLink
Exit Function
err123:
MsgBox "Не удалось выполнить изменения" & vbCrLf & Error & vbCrLf & iDevelop, , "addLinkedColumn"
Exit Function
End Function


Call addLinkedColumn("tt_args_list", "inList", "YESNO", True)

  Ответить  
 
 автор: час   (15.06.2011 в 18:55)   личное сообщение
 
 

Это канешно - всё нормально и рабоче....

  Ответить  
 
 автор: час   (15.06.2011 в 18:58)   личное сообщение
 
 



Public Function FUN_ADD_FIELD_NEW(CONNECT As Connection, _
STR_TABLE_NAME As String, _
STR_FIELD_NAME As String, _
STR_FIELD_TYP As String) As Boolean
' добавление поля к таблице.
' "MONEY" "TEXT(25)", "DOUBLE", "BIT"
Dim adoxCat As Object
Dim adoxTbl As Object
 On Error GoTo FUN_ADD_FIELD_NEW_Error
'----------------------------------------------------------------------------------
    
FUN_ADD_FIELD_NEW = True

Set adoxCat = CreateObject("ADOX.Catalog")
Set adoxTbl = CreateObject("ADOX.Table")

Set adoxCat.ActiveConnection = CONNECT

    CONNECT.Execute "ALTER TABLE " & STR_TABLE_NAME & "" _
   & " ADD COLUMN " & STR_FIELD_NAME & " " & STR_FIELD_TYP
   
CONNECT.TableDefs(STR_TABLE_NAME).Fields(STR_FIELD_NAME).Properties("DisplayControl") = 106
Set adoxCat = Nothing
Set adoxTbl = Nothing

'----------------------------------------------------------------------------------
   On Error GoTo 0
   Exit Function
FUN_ADD_FIELD_NEW_Error:
MsgBox "Возможно база указана не верно!!!   Или изменения уже произведены."
FUN_ADD_FIELD_NEW = False
End Function

  Ответить  
 
 автор: час   (15.06.2011 в 19:14)   личное сообщение
 
 


    CONNECT.Execute "ALTER TABLE " & STR_TABLE_NAME & "" _
   & " ADD COLUMN " & STR_FIELD_NAME & " " & STR_FIELD_TYP
 Set prt = CONNECT.fld.CreateProperty("DisplayControl", adInteger, 106)

    CONNECT.fld.Properties.Append prt 
    CONNECT.fld.Properties.Refresh



что то не так.......

  Ответить  
 
 автор: Lukas   (15.06.2011 в 19:18)   личное сообщение
 
 

Я бы сказал все не так. :)
Гремучая смесь ADO и DAO.

  Ответить  
 
 автор: час   (15.06.2011 в 19:28)   личное сообщение
 
 

Угу......

  Ответить  
 
 автор: час   (15.06.2011 в 19:29)   личное сообщение
 
 

Я тут прикинул - хреново быть бестолковым.
Нафига в таблице делать флажок.......
Пусть оно там так и будет логическим полем, а вот на форме - нарисуем флажок, связанный с этим полем - и
пробалемы то нет.
ЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁЁ - тупость -двигатель прогресса

  Ответить  
 
 автор: Explorer   (15.06.2011 в 20:41)   личное сообщение
 
 

если честно сказать, твои вопросы иногда вгоняют в ступор.

  Ответить  
 
 автор: час   (15.06.2011 в 22:17)   личное сообщение
 
 


если честно сказать, твои вопросы иногда вгоняют в ступор.

Вот и я о том же.
Я порой от них в ступоре нахожусь - с ними ложусь и просыпаюсь - УЖЖЖЖАССС

  Ответить  
 
 автор: Explorer   (15.06.2011 в 20:39)   личное сообщение
 
 

а я не успел с работы :)

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