PROBLEMAS EM VARRER UM BANCO!!!

JAVANERDS 05/04/2011 07:07:38
#370442
Set rssSQL = New ADODB.Recordset
sql = [Ô]SELECT nome FROM clientes WHERE nome like %nilo*%[Ô] /// AQUI ELE PROCURAR O NOME NILO NO MEU BANCO E PEGA ELE PARA MIM BREVE SERÁ DATA

Conexao.AbrirSQL// AQUI TÁ BLZ
rssSQL.Open sql, cnnSQL, adOpenKeyset, adLockPessimistic // AQUI TÁ BLZ
Conexao.FecharSQL
sqlAccess = [Ô]Insert into teste(nome) Values([ô][Ô] & sql & [Ô][ô])[Ô] // ESTÁ LINHA TÁ INSERINDO DE BOA
//O problema está em na variavel, sql que ñ tá me trazendo o valores e sim [Ô]select nome from clientes where nome like %nilo*%[Ô].
Conexao.AbrirConexao
Conexao.cnnAccess.Execute sqlAccess
Conexao.FecharConexao

Gostaria de saber como posso varer um banco em dedados!!

em php eu criaria uma variavel array e usava um foreach e jah elvis.
em vb nunca usei array.

aguardando ajuda
MARCELO.TREZE 05/04/2011 10:22:21
#370451
ué mas num seria assim

Set rssSQL = New ADODB.Recordset
sql = [Ô]SELECT nome FROM clientes WHERE nome like %nilo*%[Ô] /// AQUI ELE PROCURAR O NOME NILO NO MEU BANCO E PEGA ELE PARA MIM BREVE SERÁ DATA

Conexao.AbrirSQL// AQUI TÁ BLZ
rssSQL.Open sql, cnnSQL, adOpenKeyset, adLockPessimistic // AQUI TÁ BLZ
Conexao.FecharSQL

Set [txt-color=#0000f0]rssSQL2[/txt-color] = New ADODB.Recordset
sqlAccess = [Ô]Insert into teste(nome) Values([ô][Ô] & sql & [Ô][ô])[Ô] // ESTÁ LINHA TÁ INSERINDO DE BOA
//O problema está em na variavel, sql que ñ tá me trazendo o valores e sim [Ô]select nome from clientes where nome like %nilo*%[Ô].

Conexao.AbrirConexao
[txt-color=#0000f0]rssSQL2[/txt-color].Open sqlaccess, cnnSQL, adOpenKeyset, adLockPessimistic
Conexao.FecharConexao


tanto pra consultar como para inserir vc deve usar a mesma lógica

JAVANERDS 05/04/2011 11:12:34
#370461
Entaum estou transferiando dados de um banco sql para um banco access.... mais nao tou conseguindo fazer consulta... filtrar
ARCADYUM 05/04/2011 11:59:12
#370467
Resposta escolhida
Java,
o sql na sua concepção do código é só a instrução passada para consulta no banco. Na realidade quem vai agrupar os dados é o seu rssSql. Porém acontece o seguinte: ao utilizar o like ele vai retornar todos os dados que você informar na condição, ou seja, pode vir mais de um registro. Se você tem certeza que vem só um registro na consulta, atribui ela a uma variável string e coloca no values ou se quiser coloca direto mesmo rssSQL([Ô]nome[Ô]).value
Espero que te ajude.
JAVANERDS 05/04/2011 14:21:44
#370479
Ela vem mais de 50 dados
ARCADYUM 05/04/2011 15:15:03
#370488
Bom,
eu não vou dizer que é a melhor forma, mas eu então faria o seguinte:

if rssSQL.recordcount > 0 then
rssSql.Movefirst
for i = 1 to rssSQL.recordcount

sqlAccess = [Ô]Insert into teste(nome) Values([ô][Ô] & sql & [Ô][ô])[Ô]
Conexao.AbrirConexao
Conexao.cnnAccess.Execute sqlAccess
Conexao.FecharConexao
rssSql.movenext

next i
Conexao.FecharSQL
end if
ARCADYUM 05/04/2011 15:17:38
#370489
Errei no values,

if rssSQL.recordcount > 0 then
rssSql.Movefirst
for i = 1 to rssSQL.recordcount

sqlAccess = [Ô]Insert into teste(nome) Values([ô][Ô] & rssSql([Ô]nome[Ô]).value & [Ô][ô])[Ô]
Conexao.AbrirConexao
Conexao.cnnAccess.Execute sqlAccess
Conexao.FecharConexao
rssSql.movenext

next i
Conexao.FecharSQL
end if

Olha se ajuda.
JAVANERDS 06/04/2011 09:15:44
#370576
Deu certo brother.. agora tou com um outro probleminha...... mas antes deixa eu publica a solução

Citação:

Modulo ou Classe Conexao...

Option Explicit
Public cnnAccess As ADODB.Connection
Public rssAccess As ADODB.Recordset
Public cnnSQL As ADODB.Connection
Public rssSQL As ADODB.Recordset


Public Sub AbrirConexao(Optional Arquivo As String)
Set cnnAccess = New ADODB.Connection
If Arquivo = [Ô][Ô] Then Arquivo = [Ô]nilo.mdb[Ô]
cnnAccess.ConnectionString = [Ô]Provider=Microsoft.Jet.OLEDB.4.0;Data Source=[Ô] & _
App.Path & [Ô]\[Ô] & Arquivo & [Ô];Persist Security Info=False[Ô]
cnnAccess.Open

End Sub

Public Sub FecharConexao()
If (Not cnnAccess Is Nothing) Then
If cnnAccess.State = 1 Then
cnnAccess.Close
End If
Set cnnAccess = Nothing
End If
End Sub

Public Sub AbrirSQL(Optional usuarioSQL As String, Optional senhaSQL As String, Optional servidorSQL As String, Optional BancoDadosSQL As String)
[ô]Conexão SQL
usuarioSQL = [Ô]teste[Ô]
senhaSQL = [Ô]123abc@[Ô]
servidorSQL = [Ô]192.168.1.999[Ô]
BancoDadosSQL = [Ô]NILO[Ô]
Set cnnSQL = New ADODB.Connection
cnnSQL.ConnectionString = [Ô]Provider =SQLOLEDB.1;Persist Security Info=False;User ID=[Ô] & usuarioSQL & [Ô];Password=[Ô] & senhaSQL & [Ô];Initial Catalog=[Ô] & BancoDadosSQL & [Ô];Data Source=[Ô] & servidorSQL & [Ô][Ô]
cnnSQL.Open
If cnnSQL.State = adStateOpen Then
MsgBox [Ô]conexão efetuada com sucesso!!![Ô], vbInformation, [Ô] Conexão SQL[Ô]
Else
MsgBox [Ô]Tente novamente!!![Ô], vbInformation, [Ô] Conexão SQL[Ô]
End If
End Sub

Public Sub FecharSQL()
If (Not cnnSQL Is Nothing) Then
If cnnSQL.State = 1 Then
cnnSQL.Close
End If
Set cnnSQL = Nothing
End If
End Sub



vlw maninho ARCADYUM

Citação:

frmSQL

Private Sub Command1_Click()
Dim sql As String
Dim sqlAccess As String


sql = [Ô]SELECT * FROM clientes where [Ô]

Set rssSQL = New Recordset
Conexao.AbrirSQL

rssSQL.Open sql, cnnSQL, adOpenKeyset, adLockPessimistic
rssSQL.MoveFirst
If rssSQL.RecordCount > 0 Then
rssSQL.MoveFirst
For i = 1 To rssSQL.RecordCount

sqlAccess = [Ô]INSERT INTO teste(nome,idade,data) VALUES ([ô][Ô] & rssSQL([Ô]nome[Ô]).Value & [Ô][ô],[ô][Ô] & rssSQL([Ô]idade[Ô]).Value & [Ô][ô],[ô][Ô] & rssSQL([Ô]data[Ô]).Value & [Ô][ô])[Ô]
Conexao.AbrirConexao
Conexao.cnnAccess.Execute sqlAccess
Conexao.FecharConexao
rssSQL.MoveNext

Next i
Conexao.FecharSQL
End If


End Sub



Obrigado á tds que colaboram ........



Agora meu outro problema quero criar um campo data no sql serve mais lah só tem datetime como seria uma consulta com sql.
Minha logica.

consult = txtdata.text

sql = select * from where data like %consult%

ai ele vai gravar só os registros selecionados na data...
ARCADYUM 06/04/2011 11:50:08
#370602
Eu não entendo de Sql Server, até mesmo por quê trabalho com o Access e o FireBird, mas acredito que a lógica não foge muito um dos outros.
Nunca testei data combinado com o like, até mesmo por que o like é para busca em textos (me corrijam se eu estiver falando besteira) e uma consulta com data, dá aquela impressão de ser uma consulta exata no tempo. Ou é uma data precisa ou um espaço de tempo.

Veja esses tópicos
http://imasters.com.br/artigo/229/sql_server/trabalhando_com_datas_no_sql_server/
http://www.devmedia.com.br/post-1946-Funcoes-de-data-no-SQL-Server.html

O único detalhe que percebi com os bancos de dados que trabalho é que todos só permitem consulta no formato americano ou seja mm/dd/yyyy e eu recomendo que você coloque ja na instrução. Exemplo:
sql = select * from where data = [Ô] & format(consult, [Ô]mm/dd/yyyy[Ô]) & [Ô]
Tópico encerrado , respostas não são mais permitidas