Ir para conteúdo
Fórum Script Brasil

Carolina Marinho

Membros
  • Total de itens

    22
  • Registro em

  • Última visita

Sobre Carolina Marinho

  • Data de Nascimento 12/08/1982

Perfil

  • Gender
    Female
  • Location
    Niterói - RJ

Carolina Marinho's Achievements

0

Reputação

  1. Oi Fulvio, boa tarde! Pensei nessa possibilidade também, o problema é que eu to fazendo isso tudo via VB 6, e assim fica beeeeem complicado... A solução que eu achei foi: Gerar um SEQUENCIAL na tabela; ALTER TABLE DBO.tabela ADD SEQUENCIAL BIGINT Incrementar esse SEQUENCIAL; declare @secuence BIGINT ; set @secuence = '0'; update DBO.tabela set @secuence = SEQUENCIAL = @secuence + 1 E comparar o TELEFONE; select * from tabela as a inner join (select MAX(SEQUENCIAL) AS SEQUENCIAL ,TELEFONE from tabela group by telefone) as b on a.SEQUENCIAL = b.SEQUENCIAL ORDER BY A.TELEFONE Isso me deu o resultado esperado, mas corro o risco de um timeout em algum lugar... :) Muito obrigada, Fulvio!!! Vou testar a sua solução e verificar o menor tempo de execução!
  2. Bom dia, tenho uma tabela com 22 campos, onde o campo TELEFONE possui registros duplicados. Preciso pegar todos os campos da tabela mas que o TELEFONE não se repita. Exemplo: NOME_CLIENTE | ENDERECO | TELEFONE | CPF MARIA DA SILVA | RUA DO SABÃO 23, 505 | 12345678 | 123.456.789-0 JOSE DE SOUZA | RUA 13 48, CASA 2 | 12345678 | 987.654.321-0 Os telefones são iguais. Eu preciso pegar os 4 campos da tabela mas somente um registro, não importando qual deles (MARIA ou JOSE) alguém pode me ajudar?
  3. Consegui resolver... Abri a conexão usando With rs .Open Source:=sql, _ ActiveConnection:=cn, _ CursorType:=adOpenKeyset, _ LockType:=adLockOptimistic End With Obrigada :)
  4. kuroi, Descobri o que está acontecendo, mas não sei resolver... Antes de fazer o update, eu fechei o rs e funcionou perfeitamente. Sim, minha conexão funciona, eu consigo fazer select numa boa, o problema (eu acho) é que eu estou tentando fazer um update no registro que o select tá... fiz assim pra testar: Do While Not rs.EOF numeroCliente = rs.Fields("NUMERO_CLIENTE").Value numeroDoc = rs.Fields("NUM_DOC").Value If Not IsNull(numeroDoc) Then If Not IsNumeric(numeroDoc) Then rs.Close variavel_a_testar = numeroDoc If TestaRegExp("[^0-9]+", variavel_a_testar) = False Then numeroDoc = aString Update_documento End If End If Else numeroDoc = "00000000" Update_documento End If rs.MoveNext Loop Function Update_documento() Set cn_update = New ADODB.Connection Set rs_update = New ADODB.Recordset Banco_de_dados = "xxxxxx" servidor = "xxxxxxxxxxx" cn_string = "Provider=SQLOLEDB.1;Integrated Security=SSPI;Persist Security Info=False;Initial Catalog=" & Banco_de_dados & ";Data Source=" & servidor ' & " User ID=*****;Password=********" Set cn_update = New ADODB.Connection With cn_update .Open cn_string .CommandTimeout = 120 End With txt_sql = "Update_Documento " & numeroCliente & ", '" & numeroDoc & "'" cn_update.CommandTimeout = 120 cn_update.Execute txt_sql, , adExecuteNoRecordsSet End Function Assim funcionou, só que quando volta pro loop, dá erro dizendo que tá fechado (claro....). Isso mostra que o erro é o select aberto... Enfim, pensei em duas soluções, mas não sei executar nenhuma delas... 1- Criar uma matriz com colunas NUMERO_CLIENTE, NUMERO_DOC, NUMERO_TELEFONE (são os campos que eu preciso) que vai salvar os dados do select, para que eu possa fechá-lo antes do update; 2- Disseram que, por padrão, o VB trava qualquer execução na tabela que está sendo ultilizada, mas que tem como destravar, possibilitando o select ativo e o update. Espero ter conseguido explicar...
  5. Pessoal, boa tarde! Não estou conseguindo fazer um update simples em uma tabela, está dando 'tempo excedido'. Já tentei aumentar o tempo de comando e nada... Se eu pego a querie pelo immediate e rodo direto no banco, funciona como esperado... Alguém pode ajudar? Private Sub Form_Load() Dim usuario, senha, servidor, BancoDados As String Dim sql As String Dim sql_update As String Dim cn As New ADODB.Connection Dim rs As New ADODB.Recordset servidor = "TI01" BancoDados = "master" cn.Provider = "SQLOLEDB" cn.Properties("Data Source").Value = servidor cn.Properties("Initial Catalog").Value = BancoDados cn.Properties("User ID").Value = "usuario" cn.Properties("Password").Value = "senha" cn.Open Set rs = New ADODB.Recordset Set rs.ActiveConnection = cn sql = "SELECT * From Base_WA_140909" sql = sql & " WHERE (TXT_NOME_CIDADE = 'TANGUA') AND (CLASSE_SUBCLASSE > '02') AND " sql = sql & " (EST_CLIENTE = '0') OR (EST_CLIENTE = '3')" rs.Open sql, cn rs.MoveFirst Do While Not rs.EOF numeroCliente = rs.Fields("NUMERO_CLIENTE").Value If IsNull(rs.Fields("telefone").Value) Then sql_update = "UPDATE Base_WA_140909 SET TELEFONE = '00000000' WHERE NUMERO_CLIENTE = '" & numeroCliente & "'" cn.CommandTimeout = 120 cn.Execute sql_update, , adExecuteNoRecordsSet End If rs.MoveNext Loop End Sub
  6. Eu achei!!! Eu tinha procurado em componentes... :unsure: Vou testar e volto pra dizer o que aconteceu :blush:
  7. Também não tem... Achei uma solução válida, mas pra ser feita no SQL IF EXISTS (SELECT 1 FROM INFORMATION_SCHEMA.TABLES WHERE TABLE_TYPE='BASE TABLE' AND TABLE_NAME='nomedatabela') SELECT 'tablename exists.' ELSE SELECT 'tablename does not exist.' Isso serviu pra mim. Mas, mesmo assim, eu ainda prefiro no VB <_<
  8. Não tem essa opção nos componentes... 'Microsoft ActiveX Data Objects Extensions for DDL and Security 2.x ( ADOX)' :angry:
  9. Kuroi, acabei vendo o favorito errado :unsure: ficou assim: servidor = "WA-TAURUS" BancoDados = "SGC" cnTaurus.Provider = "SQLOLEDB" cnTaurus.Properties("Data Source").Value = servidor cnTaurus.Properties("Initial Catalog").Value = BancoDados cnTaurus.Properties("User ID").Value = "*****" cnTaurus.Properties("Password").Value = "*****" cnTaurus.Open Set rsTaurus = New ADODB.Recordset Set rsTaurus.ActiveConnection = cnTaurus Dim cat As New ADOX.Catalog Dim tbl As New ADOX.Table Dim existe As Boolean Set cat.ActiveConnection = cnTaurus existe = False For Each tbl In cat.Tables If Tabela = "TBD_ODONTO_DATA_CARGA" Then existe = True End If Next Continua dando o mesmo erro, agora na linha 'Dim cat As New ADOX.Catalog'
  10. Kuroi, fiz o seguinte: Dim db As DAO.Database Dim existe As Boolean Dim Tabela As DAO.TableDef existe = False Set db = DBEngine.OpenDatabase("D:\Banco_de_Dados_WA\SGC.mdf") For Each Tabela In db.TableDefs If Tabela = "TBD_ODONTO_DATA_CARGA" Then existe = True End If Next mas dá erro "Used-defined type not defined" na linha 'Dim db As DAO.Database'
  11. Preciso de uma rotina que verifique se uma tabela existe no banco de dados (estou usando sql server), caso exista, faz o select nessa tabela, caso não exista (o que daria erro no VB), seja realizado um outro procedimento... Gostaria de saber qual condição usar.
  12. Muito obrigada, kuroi! Mais uma vez! ;)
  13. Boa tarde! Eu tenho uma rotina genérica (servidores, bancos e tabelas diferentes, dependendo da solicitação do usuário) que tira informações do banco de dados e insere numa planilha do excel, mas essas informações podem ter acentos ( ex: ã, é, á...). Em algumas tabelas, as palavras tem acento e em outras, não. Utilizei o Select Case para fazer a compração, mas precisaria retirar os acentos, caso eles existam... Alguém sabe se isso é possível? Para facilitar o entendimento: Select Case UCase(Trim(ws_file.Range("B" & contA4).Value)) Case "OCUPADO" ws_file.Range(ActualCol & contA4).Value = ocupado Case "não ATENDE" ws_file.Range(ActualCol & contA4).Value = naoatende Case "SECRETARIA ELETRONICA" ws_file.Range(ActualCol & contA4).Value = secretaria Case "TENTATIVA SEM SUCESSO" ws_file.Range(ActualCol & contA4).Value = tentsemsucesso End Select Na quarta linha do código, não é "não ATENDE" e sim "N A O ATENDE" sem os espaços. O forum tá editando para 'não'.
  14. Ocultar a plan2 funcionou usando o Set. As colunas continuam sendo ocultadas até a H. :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: :angry: Mas eu to achando que as colunas estão travadas, ou ligadas, ou qualquer coisa do tipo, porque se eu mudo, por exemplo, pra ("I:M") funciona
  15. Nomeei a planilha como Plan2 mesmo, e não funcionou, continua dando o mesmo erro. é preciso utilizar Set ws_file = wb_file.Worksheets(numero da planilha) ??? Coloquei assim: Rows("23:34").Select Selection.EntireRow.Hidden = True Columns("C:E").Select Selection.EntireColumn.Hidden = True Plan2.Visible = xlSheetHidden E continua escondendo as colunas de C a H
×
×
  • Criar Novo...