O QUE ESSAS LINHAS FAZEM?

LUISSERA 20/03/2012 09:24:10
#397597
Gostaria de saber o que cada linha faz, pra isso irei postar algumas dúvidas, e falar o que não entendo.
Gostaria de ajuda também para comentar o código, comentar corretamente o código.
E se estiver difícil de entender favor me ajudar a melhorar, quero ter um código claro e limpo desde o início

1 -
  cnnComando.CommandText = [Ô]select * from Usuarios where Codusuario=(select max(Codusuario) from Usuarios where Codusuario < ?)[Ô]
cnnComando .Parameters(0).Value = txtCodUsuario.Text
Set rsSelecao = cnnComando.Execute

Nesse eu já mato 3 linhas, no comando SQL tenho dúvidas o que seria aquele ? no final, eu imagino que seja o valor que ele tem sei lá, depois o que seria aquele Parameters, e por ultimo porque se usa o Set rsSelecao e não apenas o .Execute igual algumas outras.
Obs: Usei With cnnComando e coloquei apartir do ponto, só coloquei o cnnComando pra ficar facil de visualizar, mais no código está melhor

2 -
  cnnComando.CommandType = adCmdText 

Pq usar adCmdText nesse commandType, o que mudaria se eu mudasse

3 - Qual a diferença entre Command e RecordSet e quando usar um, e quando usar outro

4 -
Set reSelecao = Nothing
Set cnnComando = Nothing


Novamente o pq desse Set nas variáveis, e pq tenho que limpar o command e o recordset?

5 -
  With cnnComando
.ActiveConnection = cnnBiblio
.CommandType = adCmdText
.CommandText = [Ô]Delete from Usuarios Where CodUsuario = [Ô] & txtCodUsuario.Text & [Ô];[Ô]
.Execute
End With

Nesse caso não usei o RecordSet, pq?

Se conseguir intender essas dúvidas o programa que fiz de Biblioteca (Estou pegando de uma apostila, e com ajuda de vocês pra identificar os problemas e corrigi-los), se conseguir intender essas coisas, até a parte de Cadastro intendi muito bem, falta essas coisas que acredito ser a parte de banco de dados, nunca fui familiarizado com banco começei a ver esse Semestre na faculdade, mais nem entramos em nada de programação ainda, só ta falando sobre história esse tipo de coisa.
Obrigado
KERPLUNK 20/03/2012 10:06:13
#397605
Resposta escolhida
1 - O ponto de interrogação é placeholder para o parâmetro que é incluído logo abaixo na linha cnnComando .Parameters(0).Value = txtCodUsuario.Text
2 - adCmdText, indica que o comando é um SQL normal que não envolve nenhuma Stored Procedure.
3 - Recordset, é um objeto que captura o retorno do banco de dados. Um comando Select, retorna linhas que são armazenadas no recordset.
4 - [Ô]Limpar[Ô] as variáveis é uma boa prática, isso garante que nenhuma [Ô]sujeira[Ô] vai ficar na variável.
5 - O comando SQL [Ô]Delete[Ô] não retorna linhas, por isso não é necessário armazenar seu retorno num objeto recordset

Gramática:
Alguns me chamam de chato, mas erros de gramática me deixam bastante desconfortável:
Entendi e não Intendi
Começar é com cedilha, cemecei não.
Mas é conjunção coordenada adversativa e mais pronome indefinido. Use MAS quando indicar situação de oposição e MAIS deve ser usado como oposto à MENOS:
- Esforcei-me bastante, MAS não obtive o resultado desejado.
- Comprei a camisa MAIS cara da loja.

Esses pequenos vícios de linguagem, vão fazer muita diferença quando apresentar um trabalho ou fizer uma redação.
LUISSERA 20/03/2012 10:21:31
#397611
bom, vamos lá pelo o que entendi então, Eu só devo Usar RecordSet quando querer um retorno? vamo dizer se quiser pegar o Maior Valor uso com o RecordSet, agora se quiser apenas atualizar, eu nao utilizo ele, é isso?
Outra coisa o Parameters não deveria ser antes então pra guardar o valor? aprendi programação orientada a objetos na facul e estruturada também, ambas ia normalmente de cima pra baixo.
Esse adCmdText sempre que eu quiser dar um comando manual no banco, um Select ou Update, ou qualquer coisa é ele que utiliza? Se no caso quiser criar um banco e depois uma tabela irei utilizar, create database banco e logo em seguida create table lalala (atributos); irei utilizar o mesmo?
O que seria Stored Procedure?
foi essas coisas que entendi, pode confirmar?
KERPLUNK 20/03/2012 10:36:39
#397613
Citação:

Eu só devo Usar RecordSet quando querer um retorno?


Não é bem quando quiser um retorno. Os comandos SQL podem ou não retornar uma massa de dados, usando um recordset você pega o que o comando retorna.

Citação:

vamo dizer se quiser pegar o Maior Valor uso com o RecordSet, agora se quiser apenas atualizar, eu nao utilizo ele, é isso?


Não entendi muito bem isso, mas toda a vez que executar uma query que tenha retorno, deve usar o recordset para buscar esse retorno.

Citação:

Outra coisa o Parameters não deveria ser antes então pra guardar o valor?


Essa não entendi mesmo...

Citação:

Esse adCmdText sempre que eu quiser dar um comando manual no banco, um Select ou Update, ou qualquer coisa é ele que utiliza?


Sim

Citação:

Se no caso quiser criar um banco e depois uma tabela irei utilizar, create database banco e logo em seguida create table lalala (atributos); irei utilizar o mesmo?


Exatamente. Todo e qualquer comando SQL que não seja uma Stored Procedure, deve usar a propriedade adCmdText como tipo de comando.

Citação:

O que seria Stored Procedure?


Stored Procedure é uma função escrita dentro do banco de dados, mais ou menos como uma Sub ou Function do VB, só que dentro do banco.
LUISSERA 20/03/2012 11:08:28
#397622
eu intendi tudo agora, por enquanto é só isso, Muito Obrigado cara, foi de muita ajuda pra mim. Abraços
Tópico encerrado , respostas não são mais permitidas