ALTERANDO A POSICAO DO CHECKBOX NA TABELA MDB
Pessoal preciso saber como proceder a alteração do checkbox quando ele for marcado e desmarcado para que altera no banco de dados do access. Utilizo para fazer as alterações em minha tabela da seguinte forma mas nao funciona com checkbox.
Dim db As Database
Dim query As String
Dim dyn As Recordset
Set db = OpenDatabase([Ô]c:SistemaCadastro.Mdb[Ô], False, False, [Ô];PWD=Senha[Ô])
query = [Ô]Select * From Tabela where CODIGO = [ô][Ô] & CODIGO & [Ô][ô][Ô]
Set dyn = db.OpenRecordset(query, dbOpenDynaset)
If Not dyn.EOF Then
dyn.Edit
dyn([Ô]CODIGO[Ô]) = CODIGO
dyn([Ô]EMPRESA[Ô]) = EMPRESA
dyn([Ô]ENDERECO[Ô]) = ENDERECO
dyn(AT1.Value) = CStr(AT1.Value) [ô] NAO ALTERA!
dyn.Update
MsgBox [Ô]Alteração Registrada com (SUCESSO).![Ô], vbExclamation, PASTA
End If
db.Close
Dim db As Database
Dim query As String
Dim dyn As Recordset
Set db = OpenDatabase([Ô]c:SistemaCadastro.Mdb[Ô], False, False, [Ô];PWD=Senha[Ô])
query = [Ô]Select * From Tabela where CODIGO = [ô][Ô] & CODIGO & [Ô][ô][Ô]
Set dyn = db.OpenRecordset(query, dbOpenDynaset)
If Not dyn.EOF Then
dyn.Edit
dyn([Ô]CODIGO[Ô]) = CODIGO
dyn([Ô]EMPRESA[Ô]) = EMPRESA
dyn([Ô]ENDERECO[Ô]) = ENDERECO
dyn(AT1.Value) = CStr(AT1.Value) [ô] NAO ALTERA!
dyn.Update
MsgBox [Ô]Alteração Registrada com (SUCESSO).![Ô], vbExclamation, PASTA
End If
db.Close
tente sem converter para string com cstr. checkbox é numérica e não string
Cara faça simplesmente assim
if AT1.Value = checked then
dyn([Ô]checkbox[Ô]) = True
else
dyn([Ô]checkbox[Ô]) = False
end if
if AT1.Value = checked then
dyn([Ô]checkbox[Ô]) = True
else
dyn([Ô]checkbox[Ô]) = False
end if
Obrigado pela força pessoal mas nao deu certo de nenhum dos sois jeitos
If AT1.Value = False Then
dyn(AT1.Value) = False
End If
ssim ai ele coloca falso no primeiro campo da tabela que é o campo codigo!
fiz a
If AT1.Value = False Then
dyn(AT1.Value) = False
End If
ssim ai ele coloca falso no primeiro campo da tabela que é o campo codigo!
fiz a
Deu certo fiz assim:
If AT1.Value = 0 Then
dyn([Ô]AT1[Ô]) = CStr(AT1.Value)
ElseIf AT1.Value = 1 Then
dyn([Ô]AT1[Ô]) = CStr(AT1.Value)
End If
Agora to com problema para trazer a informação para tela para conferir usando o lostfocus
CODIGO= dyn([Ô]CODIGO[Ô]) & [Ô][Ô]
AT1.Value = CStr(AT1.Value) & [Ô][Ô] NÃO TRAZ A INFORMAÇÃO TICANDO COMO 1 / 0 O CHECKBOX
If AT1.Value = 0 Then
dyn([Ô]AT1[Ô]) = CStr(AT1.Value)
ElseIf AT1.Value = 1 Then
dyn([Ô]AT1[Ô]) = CStr(AT1.Value)
End If
Agora to com problema para trazer a informação para tela para conferir usando o lostfocus
CODIGO= dyn([Ô]CODIGO[Ô]) & [Ô][Ô]
AT1.Value = CStr(AT1.Value) & [Ô][Ô] NÃO TRAZ A INFORMAÇÃO TICANDO COMO 1 / 0 O CHECKBOX
Conversões colega toma cuidado
CStr = Convert To String
então o checkbox le um valor inteiro 0 e 1, então usa-se
CInt = Convert To Integer
na pratica
CStr = Convert To String
então o checkbox le um valor inteiro 0 e 1, então usa-se
CInt = Convert To Integer
na pratica
AT1.Value = CInt(AT1.Value)
Marcelo obrigado pela resposta mas tentei fazer como vc explicou e nao deu certo!
usei assim:
Private Sub CODIGO_LostFocus()
Dim db As Database
Dim query As String
Dim dyn As Recordset
Set db = OpenDatabase([Ô]c:\sistema\Cadastro.Mdb[Ô], False, False, [Ô];PWD=senha[Ô])
query = [Ô]Select * From tabela where CODIGO = [ô][Ô] & CODIGO & [Ô][ô][Ô]
Set dyn = db.OpenRecordset(query, dbOpenDynaset)
If Not dyn.EOF Then
CODIGO = dyn([Ô]CODIGO[Ô]) & [Ô][Ô]
AT1.Value = CInt(AT1.Value) (nao colocou o checkbox na situação de 1 como esta na tabela!
db.Close
End If
End If
End Sub
usei assim:
Private Sub CODIGO_LostFocus()
Dim db As Database
Dim query As String
Dim dyn As Recordset
Set db = OpenDatabase([Ô]c:\sistema\Cadastro.Mdb[Ô], False, False, [Ô];PWD=senha[Ô])
query = [Ô]Select * From tabela where CODIGO = [ô][Ô] & CODIGO & [Ô][ô][Ô]
Set dyn = db.OpenRecordset(query, dbOpenDynaset)
If Not dyn.EOF Then
CODIGO = dyn([Ô]CODIGO[Ô]) & [Ô][Ô]
AT1.Value = CInt(AT1.Value) (nao colocou o checkbox na situação de 1 como esta na tabela!
db.Close
End If
End If
End Sub
colega as vezes me confundo com seu código não deveria ser
deduzo que AT1 seja o nome do seu checkbox
e que [Ô]checkbox[Ô] seja o nome do campo na tabela, de onde virá a condição 0 ou 1
AT1.Value = CInt(Dyn([Ô]checkbox[Ô]))
deduzo que AT1 seja o nome do seu checkbox
e que [Ô]checkbox[Ô] seja o nome do campo na tabela, de onde virá a condição 0 ou 1
Hehehe Marcelo peço desculpa pelo codigo pois aprendi o pouco que sei de vb em livros e forum!
o AT1 e o nome do meu checkbox e tb o nome que dei para meu campo na tabela para nao me confundir depois que nome coloquei no componente e na tabela.
Entao o 0 e 1 vira do AT1 mesmo!
o AT1 e o nome do meu checkbox e tb o nome que dei para meu campo na tabela para nao me confundir depois que nome coloquei no componente e na tabela.
Entao o 0 e 1 vira do AT1 mesmo!
Marcelo so lembrado é que eu estou querendo trazer os dados para tela de cadastro para possivel alteração nos dados ok e nao estou conseguindo fazer o checkbox me falar se esta opcao esta ou nao marcada ou seja 0/1
tá mas que na tabela seja AT1 também, o certo não seria isto:
se você colocar
[txt-color=#e80000]AT1.Value[/txt-color] = CInt([txt-color=#e80000]AT1.Value[/txt-color])
AT1 (checkbox) vai pegar o valor dele mesmo assim nunca será alterado.
Ahh, esqueci de dizer se o campo AT1 da tabela retornar true e false vc tem que tratar isso.
AT1.Value = dyn([Ô]AT1[Ô]) [txt-color=#007100] [ô] o AT1 da tabela deve ser lido como um campo e não como um componente[/txt-color]
se você colocar
[txt-color=#e80000]AT1.Value[/txt-color] = CInt([txt-color=#e80000]AT1.Value[/txt-color])
AT1 (checkbox) vai pegar o valor dele mesmo assim nunca será alterado.
Ahh, esqueci de dizer se o campo AT1 da tabela retornar true e false vc tem que tratar isso.
AT1.Value = IIF(dyn([Ô]AT1[Ô]) = True, 1, 0)
Tópico encerrado , respostas não são mais permitidas