INSERT INTO E UPDATE COM IF

ADILSOO 17/03/2012 21:58:13
#397399
aew galera, blz? , bom, queria saber como que eu faço pra inserir dados ou atualizar com o IF em cada campo,
Ex.. if txt = 1 then grave 1, se txt=2 then grave 2, if txt = 3 then grave 3

resumindo... no meio do insert ou update teria varias comparações
MARCELO.TREZE 17/03/2012 22:53:38
#397403
Resposta escolhida
ainda ta vago a situação, mas seria algo assim

Select Case TXT
Case 1
cSQL = [Ô] campo = 1[Ô]
case 2
cSQL = [Ô] campo = 2[Ô]
case 3
cSQL = [Ô] campo = 3[Ô]
End Select

sSQL = [Ô]UPDATE tabela SET[Ô] & cSQL & [Ô] where id = x[Ô]



to passando apenas a idéia que é vc montar a string conforme sua necessidade



ADILSOO 17/03/2012 23:03:51
#397405
Marcelo, é o seguinte, tenho o form que eu marco todas as funcionalidades que um certo usuario poderá acessar, e são todos checkbox, ai na hora de atualizar as informações vou ter que verificar um por um para ver se esta marcado ou nao.
MARCELO.TREZE 17/03/2012 23:24:02
#397406
tem como postar a tela, ou como está
ADILSOO 17/03/2012 23:28:44
#397408
sim claro aqui está,
MARCELO.TREZE 17/03/2012 23:38:04
#397409
ai vou te dizer o seguinte o negócio não seria atualizar como eu disse o correto seria vc possuir uma tabela de nome acesso e nela possuir os seguintes campos

cadalunos
cadcursos
cadmatricula
Agenda
carnes
recibos

etc...

todos estes campos deveriam ser do tipo sim/não e garvar deste geito

sSQL = [Ô]UPDATE tabacessos SET cadalunos = [Ô] & chkCadAlunos.Value & [Ô], cadcursos = [Ô] & chkCadCursos.Value & [Ô]....


só pra vc ter uma idéia ai nestes campos ficaria sim ou não conforme os checks entendeu





ADILSOO 17/03/2012 23:43:13
#397410
sim Marcelo, eu tenho essa tablimiteacesso , só que na hora de alterar ele teria q verificar se esta marcado e gravar né?
MARCELO.TREZE 18/03/2012 00:38:30
#397411
Então como eu disse, se o campo for do tipo sim/não bastaria ser da forma acima entendeu

veja isto

sSQL = [Ô]UPDATE tabacessos SET cadalunos = [Ô] & chkCadAlunos.Value & [Ô], cadcursos = [Ô] & chkCadCursos.Value & [Ô]....

no caso acima se chkCadAlunos estiver marcado então chkCadAlunos.Value será igual a 1 se não estiver marcado será 0

na sua tabela ficaria desta forma

idusuario | cadalunos | cadcursos | cadmatriculas
11234 | 1 | 0 | 1

0 = desmarcado
1 = marcado

entendeu vc não precisa verificar se está marcado basta salvar o valor do checkbox


GANDA.NICK 18/03/2012 22:33:22
#397449
boas Adilsoo, boas Marcelo...

Outra opção passa por vc gravar no registo do windows.


poderá tb gravar todos os valores das check box[ô]s no mesmo registo....

eu uso assim:

Option Explicit
Dim vDefinicoes As String

Private Sub CmdSalvar_Click()
Dim Ctrl As Control

vDefinicoes = vbNullString
For Each Ctrl In Form1
If TypeOf Ctrl Is CheckBox Then vDefinicoes = vDefinicoes & Ctrl.Value
Next [ô]Ctrl
SaveSetting AppName:=[Ô]NomeDoPrograma[Ô], Section:=[Ô]Memory[Ô], Key:=[Ô]Definicoes[Ô], setting:=vDefinicoes
End Sub

Private Sub Form_Load()
Dim Ctrl As Control
Dim vCont As Integer

vDefinicoes = GetSetting(AppName:=[Ô]NomeDoPrograma[Ô], Section:=[Ô]Memory[Ô], Key:=[Ô]Definicoes[Ô], Default:=[Ô]0000000000[Ô]) [ô]dez zeros no caso de dez checkbox[ô]s
vCont = 1
For Each Ctrl In Form1
If TypeOf Ctrl Is CheckBox Then
Ctrl.Value = CInt(Mid$(vDefinicoes, vCont, 1))
vCont = vCont + 1
End If
Next [ô]Ctrl
End Sub


té +
ADILSOO 19/03/2012 14:15:23
#397516
ok, Marcelo, deu certo, só queria saber uma coisa, como que eu faco na parte do IF dentro no INSERT ou UPDATE? eu já passei por essa situacao mas contornei e contornei e consegui escapar, mas sempre é bom a gente saber né, tipo...

sSQL = [Ô]UPDATE tabacessos SET cadalunos = if chk.checked = true then grave o numero 1, else grave numero 2..

sei la..nao sei se deu pra vc entender, mas é mais ou menos isso, valeu.
MARCELO.TREZE 19/03/2012 14:26:38
#397520
bom isso é uma gambiarra né, pois o certo é se colocar o valor direto porem

seria algo assim

sSQL = [Ô]UPDATE tabacessos SET cadalunos = [Ô] & IIF(chk.checked = true,[Ô]1[Ô], [Ô]0[Ô]) & ,cotinua...


Página 1 de 2 [19 registro(s)]
Tópico encerrado , respostas não são mais permitidas