SETAR VARIAVEL NO VB6
Bom dia Pessoal,
Estou com uma dúvida para passar o valor para uma variável. No meu caso eu fiz o seguinte:
- Declarei a variável, sendo: Dim resultant As Integer
- No código: resultant = ([Ô]SELECT MAX(CODIGO)FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text)
Observação: o campo txtcodigo.text está com o valor 184
Quando executo o sistema da a mensagem de Type mismatch e se eu colocar o mouse em cima da linha vejo que está retornando 0.
Coloquei o código SELECT MAX(CODIGO)FROM BANCO Where CODIGO < 184 no sql server e retornou 183, ou seja, direto pelo Sql deu certo,
Alguém poderia me ajudar?
Agradeço a todos
Roger
Estou com uma dúvida para passar o valor para uma variável. No meu caso eu fiz o seguinte:
- Declarei a variável, sendo: Dim resultant As Integer
- No código: resultant = ([Ô]SELECT MAX(CODIGO)FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text)
Observação: o campo txtcodigo.text está com o valor 184
Quando executo o sistema da a mensagem de Type mismatch e se eu colocar o mouse em cima da linha vejo que está retornando 0.
Coloquei o código SELECT MAX(CODIGO)FROM BANCO Where CODIGO < 184 no sql server e retornou 183, ou seja, direto pelo Sql deu certo,
Alguém poderia me ajudar?
Agradeço a todos
Roger
Estranho, o tópico deu status de atualizado porém não tinha mensagem nenhuma.
Cara a maneira que esta fazendo não esta correta!
a instrução SQL deve ser passado por um recordset para recuperar os valores e outra não declare integer, pois futuramente terá problemas com o limite da variável.
Qualquer duvida poste ai
a instrução SQL deve ser passado por um recordset para recuperar os valores e outra não declare integer, pois futuramente terá problemas com o limite da variável.
Qualquer duvida poste ai
Bom dia Filman,
Tentei colocar em um Recordset e aparece a mesma mensagem Erro Type Mismatch.
O Código estou usando é o seguinte (Botão Anterior):
Case 2 [ô]Botão Anterior
Dim CN_Ant As New ADODB.Connection
Dim rsSelecaoBancoAnt As New ADODB.Recordset
Dim cnnComandoBanco_Ant As New ADODB.Command
CN_Ant.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_Ant.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia BD
CN_Ant.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_Ant.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_Ant.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_Ant.Open [ô] Abrindo a conexão
Set rsSelecaoBancoAnt = New ADODB.Recordset
Set rsSelecaoBancoAnt.ActiveConnection = CN_Ant
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text And ([Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text), CN_Ant, adOpenStatic
If rsSelecaoBancoAnt.BOF Then
MsgBox [Ô]Não existem mais registros para visualização![Ô], vbInformation
Else
txtcodigo.Text = rsSelecaoBancoAnt!CODIGO
txtcodbanco.Text = rsSelecaoBancoAnt!CODIGOFEBRABAN
txtabrbanco.Text = rsSelecaoBancoAnt!ABREVIATURA
txtnomebanco.Text = rsSelecaoBancoAnt!Nome
End If
Observação:
O erro aparece na seguinte linha do código:
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text And ([Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text), CN_Ant, adOpenStatic
O que pode ser o problema?
Se vc souber de outro jeito de fazer tbm, idéias são sempre bem vindas, rsrsr
Abraço
Roger
Tentei colocar em um Recordset e aparece a mesma mensagem Erro Type Mismatch.
O Código estou usando é o seguinte (Botão Anterior):
Case 2 [ô]Botão Anterior
Dim CN_Ant As New ADODB.Connection
Dim rsSelecaoBancoAnt As New ADODB.Recordset
Dim cnnComandoBanco_Ant As New ADODB.Command
CN_Ant.Provider = [Ô]SQLOLEDB[Ô] [ô] Provedor de acesso ao SQL Server
CN_Ant.Properties([Ô]Data Source[Ô]).Value = [Ô]ROGERIO-PC\SQLEXPRESS2008[Ô] [ô]Nome da Maquina\Instancia BD
CN_Ant.Properties([Ô]Initial Catalog[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Nome do BD
CN_Ant.Properties([Ô]User ID[Ô]).Value = [Ô]SYSCONTROL[Ô] [ô]Usuário para conexão no BD no SQL SERVER 2008
CN_Ant.Properties([Ô]Password[Ô]).Value = [Ô]sysdba[Ô] [ô]Senha para conexão no BD no SQL SERVER 2008
CN_Ant.Open [ô] Abrindo a conexão
Set rsSelecaoBancoAnt = New ADODB.Recordset
Set rsSelecaoBancoAnt.ActiveConnection = CN_Ant
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text And ([Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text), CN_Ant, adOpenStatic
If rsSelecaoBancoAnt.BOF Then
MsgBox [Ô]Não existem mais registros para visualização![Ô], vbInformation
Else
txtcodigo.Text = rsSelecaoBancoAnt!CODIGO
txtcodbanco.Text = rsSelecaoBancoAnt!CODIGOFEBRABAN
txtabrbanco.Text = rsSelecaoBancoAnt!ABREVIATURA
txtnomebanco.Text = rsSelecaoBancoAnt!Nome
End If
Observação:
O erro aparece na seguinte linha do código:
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text And ([Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text), CN_Ant, adOpenStatic
O que pode ser o problema?
Se vc souber de outro jeito de fazer tbm, idéias são sempre bem vindas, rsrsr
Abraço
Roger
Se alguem mais tiver alguma sugestão, fique a vontade também
Agradeço a atenção de tdos
Roger
Agradeço a atenção de tdos
Roger
Por favor, repassar conhecimentos básicos sobre concatenação. Tente assim:
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text & [Ô] And (SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO) < [Ô] & txtcodigo.Text, CN_Ant, adOpenStatic
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text & [Ô] And (SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO) < [Ô] & txtcodigo.Text, CN_Ant, adOpenStatic
Tente assim
Mude essa linha
Para essa
Vê se consegue algo
Mude essa linha
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text And ([Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text), CN_Ant, adOpenStatic
Para essa
rsSelecaoBancoAnt.Open [Ô]SELECT MAX(CODIGO)as CODIGO FROM BANCO Where CODIGO < [Ô] & txtcodigo.Text, CN_Ant, adOpenStatic
Vê se consegue algo
Kerplunk,
Testei a linha que me passou e deu o seguinte erro:
Run-time error [ô]-2147217900 (80040e14)[ô]:
Uma expressão de tipo não booleano especificada em um contexto no qual se espera uma condição, próximo a [ô])[ô].
Filman,
Eu já havia testado o método que me indicou, porém da a seguinte mensagem:
Run-time error [ô]3265[ô]
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
Quando clico no botão anterior, apenas o registro relativo ao campo código movimenta, porém, tenho que mover tambem os campos CODIGOFEBRABAN,ABREVIATURA e NOME. Por este motivo optei pela opção da outra select.
Testei a linha que me passou e deu o seguinte erro:
Run-time error [ô]-2147217900 (80040e14)[ô]:
Uma expressão de tipo não booleano especificada em um contexto no qual se espera uma condição, próximo a [ô])[ô].
Filman,
Eu já havia testado o método que me indicou, porém da a seguinte mensagem:
Run-time error [ô]3265[ô]
O item não pode ser encontrado na coleção correspondente ao nome ou ao ordinal solicitado.
Quando clico no botão anterior, apenas o registro relativo ao campo código movimenta, porém, tenho que mover tambem os campos CODIGOFEBRABAN,ABREVIATURA e NOME. Por este motivo optei pela opção da outra select.
vou tentar também
tente
tente
rsSelecaoBancoAnt.Open [Ô]SELECT CODIGO,CODIGOFEBRABAN,ABREVIATURA,NOME FROM BANCO Where (SELECT MAX(CODIGO) as CODIGO FROM BANCO Where CODIGO = [ô][Ô] & (CInt(txtcodigo.Text) - 1) & [Ô][ô])[Ô], CN_Ant, adOpenStatic
Boa tarde Marcelo,
Deu a mesma mensagem
Run-time error [ô]-2147217900 (80040e14)[ô]:
Uma expressão de tipo não booleano especificada em um contexto no qual se espera uma condição, próximo a [ô])[ô].
Roger
Deu a mesma mensagem
Run-time error [ô]-2147217900 (80040e14)[ô]:
Uma expressão de tipo não booleano especificada em um contexto no qual se espera uma condição, próximo a [ô])[ô].
Roger
Tente assim
Veja se ajuda
Dim LCodigo As Long
rsSelecaoBancoAnt.Open [Ô]SELECT MAX(CODIGO) as COD_MAX FROM BANCO, CN_Ant, adOpenKeyset, adLockReadOnly
If rsSelecaoBancoAnt.RecordCount = 0 Then
LCodigo = 1
Else
LCodigo = rsSelecaoBancoAnt([Ô]COD_MAX[Ô]) + 1
End If
Veja se ajuda
Tópico encerrado , respostas não são mais permitidas