Ir para conteúdo
Fórum Script Brasil

vilmarbr

Membros
  • Total de itens

    126
  • Registro em

  • Última visita

Tudo que vilmarbr postou

  1. Problema em cursor com muitos registros? Tem alguma forma de fazer isto de forma mais rápida ? Eu criei tabelas temporárias pegando apenas os dados que eu preciso cruzar, já com os devidos filtros na cláusula "where", porém ainda vira e mexe dá pau e estourar o log e não faz tudo: Server Message: Number 1105, Severity 17 Server 'SERVIDOR2', Procedure 'dp_migra_tabelanova53', Line 136: Can't allocate space for object 'temp worktable' in database 'tempdb' because 'system' segment is full/has no free extents. If you ran out of space in syslogs, dump the transaction log. Otherwise, use ALTER DATABASE or sp_extendsegment to increase size of the segment. (123184 rows affected) (return status = -7) O banco é Sybase 11, e eu não tem acesso a mesma, exceto via procedure, ou seja, dependo de DBA ..... Se tiver alguma forma de fazer de 10.000 em 10.000 registros na mesma stored procedure, favor me informar. Grato. ----------------------------------------- set char_convert cp850 go drop table #tabelanova53_t go drop table #tabela23_t go drop table #tabela32_t go drop proc dp_migra_tabelanova53 go create proc dp_migra_tabelanova53 as /********************************* Cria tabelas temporárias. **********************************/ create table #tabelanova53_t ( cd_pta_opds varchar(8) null, nr_pro_compl varchar(2) null, tp_clc_prst varchar(1) null, tp_txa_ici_opds varchar(3) null, tp_par varchar(1) null, cd_nr_prst varchar(3) null, nr_seq_pag_par varchar(3) null, dt_vct_tp_txa_ici_opds varchar(10) null, vl_tp_txa_ici_opds varchar(17) null, qtd_moe_rea_par varchar(15) null, fg_mdu_bxa varchar(1) null ) select distinct b52.cd_pta_opds, b60.cd_cnt_opds, b60.tp_clc_prst, b60.cd_ps into #tabela_52_60_t from tabela52 b52, tabela60 b60 where (b52.cd_pta_opds = b60.cd_pta_opds) and (tp_cbn = 4 and dt_trf_cl is null) /*** Este filtro só traz contratos ativos. ***/ select distinct b23.cd_cnt_opds, b23.tp_txa_ici_opds, b23.dt_vct_tp_txa_ici_opds, b23.vl_tp_txa_ici_opds, b23.cd_ps into #tabela23_t from #tabela_52_60_t b60, tabela23 b23 where (b60.cd_cnt_opds = b23.cd_cnt_opds) and (b60.cd_ps = b23.cd_ps) select distinct b32.cd_cnt_opds, b32.cd_nr_prst, b32.fg_mdu_bxa, b32.cd_ps into #tabela32_t from #tabela_52_60_t b60, tabela32 b32 where (b60.cd_cnt_opds = b32.cd_cnt_opds) and (b60.cd_ps = b32.cd_ps) begin tran /********************************* Declara variáveis. Obs.: campo_f = campo formatado (tratado). No cursor os campos tem o mesmo tipo das tabelas de onde os dados são extraídos. **********************************/ declare @cd_pta_opds int, @tp_clc_prst int, @tp_txa_ici_opds int, @cd_nr_prst int, @dt_vct_tp_txa_ici_opds smalldatetime, @vl_tp_txa_ici_opds decimal(9,2), @fg_mdu_bxa varchar(1), @msgret varchar(100), @codret int /********************************* Declara o cursor a ser utilizado **********************************/ declare cur_tabelanova53 cursor for select distinct b60.cd_pta_opds, (case when b60.tp_clc_prst = 1 then 4 when b60.tp_clc_prst = 2 then 4 when b60.tp_clc_prst = 3 then 4 when b60.tp_clc_prst = 5 then 2 when b60.tp_clc_prst = 6 then 2 when b60.tp_clc_prst = 7 then 2 when b60.tp_clc_prst = 8 then 2 when b60.tp_clc_prst = 9 then 1 when b60.tp_clc_prst = 10 then 3 when b60.tp_clc_prst = 11 then 3 when b60.tp_clc_prst = 12 then 3 end) as tp_clc_prst_f, b23.tp_txa_ici_opds, b32.cd_nr_prst, b23.dt_vct_tp_txa_ici_opds, b23.vl_tp_txa_ici_opds, (case when b32.fg_mdu_bxa = 'C' then '3' when b32.fg_mdu_bxa = 'T' then '2' when b32.fg_mdu_bxa = 'E' then '1' end) as fg_mdu_bxa_f from #tabela_52_60_t b60, #tabela23_t b23, #tabela32_t b32 where (b60.cd_cnt_opds = b23.cd_cnt_opds) and (b60.cd_ps = b23.cd_ps) and (b60.cd_cnt_opds = b32.cd_cnt_opds) and (b60.cd_ps = b32.cd_ps) and (b23.cd_ps = b32.cd_ps) for read only /********************************* Abre e lê primeiro registro do cursor **********************************/ open cur_tabelanova53 fetch cur_tabelanova53 into @cd_pta_opds, @tp_clc_prst, @tp_txa_ici_opds, @cd_nr_prst, @dt_vct_tp_txa_ici_opds, @vl_tp_txa_ici_opds, @fg_mdu_bxa /********************************* Verifica se ainda existe registros a serem percorridos no cursor **********************************/ while @@sqlstatus <> 2 begin if @@sqlstatus = 1 begin rollback tran select @msgret = 'Procedure executada com ERRO. Problemas no cursor cur_tabelanova53.' select @codret = -34 return -34 end insert into #tabelanova53_t ( cd_pta_opds, nr_pro_compl, tp_clc_prst, tp_txa_ici_opds, tp_par, cd_nr_prst, nr_seq_pag_par, dt_vct_tp_txa_ici_opds, vl_tp_txa_ici_opds, qtd_moe_rea_par, fg_mdu_bxa ) values ( convert(varchar(8),@cd_pta_opds), '', convert(varchar(1),@tp_clc_prst), convert(varchar(3),@tp_txa_ici_opds), '', convert(varchar(3),@cd_nr_prst), '', convert(varchar(10),@dt_vct_tp_txa_ici_opds,104), convert(varchar(17),@vl_tp_txa_ici_opds), '', @fg_mdu_bxa ) if @@transtate = 2 or @@transtate = 3 begin rollback tran select @msgret = 'Executada com ERRO. Problemas ao atualizar #tabelanova53_t.' select @codret = -10 return -10 end commit tran /********************************* Lê próximo registro do cursor **********************************/ fetch cur_tabelanova53 into @cd_pta_opds, @tp_clc_prst, @tp_txa_ici_opds, @cd_nr_prst, @dt_vct_tp_txa_ici_opds, @vl_tp_txa_ici_opds, @fg_mdu_bxa end /********************** Traz os campos da tabela temporária formatados: nome_campo_f. Campo texto: completa espaços em branco com ' '. Campo numérico: completa espaços em branco com '0'. **********************/ select right('00000000' + cd_pta_opds,8) as cd_pta_opds_f, right('00' + nr_pro_compl,2) as nr_pro_compl_f, tp_clc_prst + replicate(' ',1 - datalength(tp_clc_prst)) as tp_clc_prst_f, right('000' + tp_txa_ici_opds,3) as tp_txa_ici_opds_f, tp_par + replicate(' ',1 - datalength(tp_par)) as tp_par_f, right('000' + cd_nr_prst,3) as cd_nr_prst_f, right('000' + nr_seq_pag_par,3) as nr_seq_pag_par_f, dt_vct_tp_txa_ici_opds + replicate(' ',10 - datalength(dt_vct_tp_txa_ici_opds)) as dt_vct_tp_txa_ici_opds_f, right('00000000000000000' + vl_tp_txa_ici_opds,17) as vl_tp_txa_ici_opds_f, qtd_moe_rea_par + replicate(' ',15 - datalength(qtd_moe_rea_par)) as qtd_moe_rea_par_f, fg_mdu_bxa + replicate(' ',1 - datalength(fg_mdu_bxa)) as fg_mdu_bxa_f from #tabelanova53_t close cur_tabelanova53 deallocate cursor cur_tabelanova53 return 0 go
  2. eu não queria usar MID para não ter que ficar comparando string, mas to vendo que não tem jeito mesmo pelo que estou pesquisando na web. acho que com MID vai ficar lento, mas se não tem jeito, vai de MID mesmo :rolleyes:
  3. Olá Pessoal, Então, eu tenho várias tabelas de banco de dados em formato texto que eu abro e varro os arquivos com estas funções da biblioteca do VB 6 VBA.FileSystem conforme abaixo. Eu gostaria de saber se tem alguma forma de pegar cada campo, sabendo a posição em que cada um começa, sem precisar usar funções de string (MID, InStr , etc...) ???? Grato. '------------------------------------------------------------------------------------ If m_strArquivoLog = "" Then MsgBox "Favor escolher o arquivo de log para processamento", vbCritical, "Aviso" Call cmdAbrirLog_Click Exit Sub Else Open m_strArquivoLog For Input As #1 End If prgBarra.Value = 0 prgBarra.Min = 0 prgBarra.Max = 100 lngTotal = LOF(1) Do While Not EOF(1) DoEvents Line Input #1, vrtLinha If InStr(1, vrtLinha, "00000001", vbTextCompare) <> 1 And _ InStr(1, vrtLinha, "99999999", vbTextCompare) <> 1 Then txtResultado.Text = txtResultado.Text & vrtLinha & vbCrLf End If lngRegistrosLidos = lngRegistrosLidos + Len(vrtLinha & vbNewLine) prgBarra.Value = Format(lngRegistrosLidos * 100 / lngTotal, "###.#0") lblAviso.Caption = prgBarra.Value & "%" & vbNewLine & "Registros Lidos: " & _ lngRegistrosLidos & vbNewLine & "Total de Registros: " & lngTotal Loop datHoraFim = Format(Now, "hh:mm:ss") lblAviso.Caption = lblAviso.Caption & vbNewLine & "Início: " & datHoraInicio & " - Fim: " & datHoraFim Close #1 '------------------------------------------------------------------------------------ Exemplo de dados de uma tabela: 0000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000277881591459000100 DE xxxxxx RIBUI RA DE VEICULOS LTDAZ00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000477881098869000105 aaaa RES L TDA T00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000 0000000314053038378000140 CA NEIRO dddddddddddd dd .MAQS.LTDAT00000
  4. Varrer collection e descobrir item já adicionado? Como eu faço isto? Tentei o esquema abaixo, mas mesmo assim tá colocando itens repetidos. Vejam: Grato. Private Sub Form_Load() Dim vrtI As Variant Dim vrtJ As Variant Dim strSequencia As String Dim colSequencia As Collection Set colSequencia = New Collection For vrtI = 1 To 8.88178419700125E+84 Randomize strSequencia = IIf(Int(Rnd * 50) = 0, 1, Int(Rnd * 50)) & " " & _ IIf(Int(Rnd * 50) = 0, 1, Int(Rnd * 50)) & " " & _ IIf(Int(Rnd * 50) = 0, 1, Int(Rnd * 50)) & " " & _ IIf(Int(Rnd * 50) = 0, 1, Int(Rnd * 50)) & " " & _ IIf(Int(Rnd * 50) = 0, 1, Int(Rnd * 50)) For vrtJ = 1 To colSequencia.Count If colSequencia(vrtJ) <> strSequencia Then colSequencia.Add strSequencia End If Next If colSequencia.Count = 0 Then colSequencia.Add strSequencia End If If vrtI = 10 Then MsgBox "Fim" End End If Next End Sub
  5. colega, já tinha achado soluções: www.baixaki.com.br/download/Camtasia-Studio.htm http://www.vbmania.com.br/vbmania/vbmdetail.php?varID=8156 obrigado mesmo assim ;)
  6. Capturar imagem de vídeo em execução, como eu faço isto no ms-windows xp usando um simples printscreen ou alt+printscreen, copiando do ms-windows media player 11 com k-lite, real player, media player classic, seja lá qual for o player, e colar num adobe photoshop 6, ms-paint brush, ms-word 2000, etc... ?? Tentei fazer isto várias vezes, mas só é colado a referência para o próprio vídeo em execução, e o vídeo fica executando em 2 ou mais lugares distintos, dependendo de em quantos editores de imagem for colado. Grato. :ninja: :blink:
  7. Bem, quem quiser, eu posso mandar o script pronto em txt, html, zip, enfim, qualquer. formato com extensão modificada para o leitor de e-mail ou fórum não bloquear a sintaxe :o :( :blush:
  8. Bem, o que você falou tb. daria certo, mas era isto que eu tinha em mente conforme abaixo, o qual descobri após muita análise e raciocínio lógico :D !
  9. :blush: :ninja: :D :lol: SIM, O DIALOG-Plus/C É BRASILEIRO MESMOOOOOO ----- Outra linguagem mais novo e 100% brasileira é a Lua: Outra linguagem também 100% brasileira é a Logic Basic: ------ []´s VILMARBR
  10. Como eu faço para pegar (manipular) os valores de uma matriz (array) de botão tipo "radio" usando VBScript? eu quero executar ações quando usuário clicar no optionbutton do HTML (input type=radio), ou seja, numa SUB só fazer toda minha manipulação. eu só consegui fazer agora sem criar a matriz de botoes radio, ou seja, cada botao com um nome: optB1, optB2 ... eu queria: optX(0), optX(1)... ou seja, manipular pelo index da matriz de controles (elementos HTML) usando VBScript. com javascript tb consegui fazer na boa, porém lá a forma de programar é diferente, você chama o evento dentro de cada botão e depois verifica qual index foi clicado do elemento. tentei conforme abaixo, mas não funciona :( Sub optCor_OnClick(index as integer) msgbox "oi" End Sub <html> <head> <title>Pegar valores de botão radio e mudar cor de elementos</title> <script language="VBScript"> Sub btnTeste_OnClick() msgbox "oi" End Sub Sub optCor_OnClick(index as integer) msgbox "oi" End Sub </script> </head> <body> <p> <fieldset id="fldCores" title="ol aolal lllll" style="width: 300px;"> <legend align="left">Cores</legend> <table id="tabCores" width="300" border="0" bgcolor="#DCDCDC"> <tr> <td width="70%" align="left">Azul</td> <td width="30%" align="left"><input type="radio" name="optCor" value="#0000FF"></td> </tr> <tr> <td width="70%" align="left">Amarelo</td> <td width="30%" align="left"><input type="radio" name="optCor" value="#FFFF00"></td> </tr> <tr> <td width="70%" align="left">Verde</td> <td width="30%" align="left"><input type="radio" name="optCor" checked value="#00FF00"></td> </tr> <tr> <td width="70%" align="left">Vermelho</td> <td width="30%" align="left"><input type="radio" name="optCor" value="#FF0000"></td> </tr> </table> </fieldset> <p><input type="text" name="txtTeste" value="Texto xx x x x x x x " style="color:white; background-color=black;"> <p><input type="button" name="btnTeste" value="Texto xx x x x x x x " style="color:white; background-color=black;"> </body> </html> ------ []´s VILMARBR
  11. o segredo é chamar o procedimento de atualiazação no vba/nome da folha/Private Sub Worksheet_Calculate() Private Sub Worksheet_Calculate() Call CompararOscilacao Call CompararUltimaCotacao End Sub grato por quem visitou o tópico :D
  12. Estou com uma planilha vinculada via DDE a um executável que dá as cotações. Porém não consigo fazer nada AUTOMATICAMENTE no momento em que as células são alteradas via DDE pela executável. Eu só consigo fazer alguma alteração ao executar a as macros manualmente, ou seja, não consigo deixá-las rodando em background e atualizando a planilha conforme codificação no VBA. O que falta ???
  13. quando. estes programas félas reaparecerem eu vou dar um checada e ver se eles estão no \windows\temp. Vlw :rolleyes:
  14. Programas executados pelo sistema (usuário SYSTEM) com nome de números e letras .exe, alguém sabe se são vírus ? Eu já procurei pelo nome deles nos diretórios raiz do HD e em todas pastas, mas nada encontrei. Nomes, por exemplo: TSC.exe, DGEE9C.exe. Observo que no PC onde trampo tem Trend Micro OfficeScan. Acontece que a cada vez que eu mato um processo destes após o boot do sistema, após alguns segundos outro processo é criado. E isto ocorre por algumas vezes e depois o programa não se cria mais. Grato.
  15. Não sou eu que estou vendendo, apenas te indiquei uma placa boa. Voce pode comprar pela internet neste endereço http://comprar.todaoferta.uol.com.br/placa...i-gf-L7UZ18NKNU Ou pode procurar por ela nas lojas de suprimentos em informatica em São Paulo-SP abraço Legal, mais uma vez eu agradeço. Acho que vou pedir à minha esposa fazer esta pesquisa/compra na Santa Efigênia neste próximo sábado, ehehehh :rolleyes:
  16. ESPECIFICACAO DUAL VIEW: SIM (01 VGA, 01 DVI) FABRICANTE: XFX GPU: NVIDIA GEFORCE 6200 LE INTERFACE: AGP MEMORIA INTERNA: 256MB DDR2 *64 BITS * 266 MHZ MODELO: (PV-T44D-WANG) RAMDAC: 400 MHZ RECURSOS EMBUTIDOS: SAIDA PRA TV RESOLUCAO: 2048 X 1536 SITE DO FABRICANTE: HTTP://WWW.XFXFORCE.COM TAXA TRANSF EXTERNA: 8X TECNOLOGIA: SOPORTA DIRECTX 90 SHADER MODEL 30 ---CONECTORES SAIDA AUDIO/VIDEO: 01 VGA, 01 DVI, 01 S-VIDEO ---ACESSORIOS 1CABO DE TV: 01 S-VIDEO 1 CD COM DRIVER: SIM 1 MANUAL: SIM VALOR r$ 159,00 http://comprar.todaoferta.uol.com.br/placa...i-gf-L7UZ18NKNU abraço Legal, e é você mesmo que está vendendo? quanto fica para entregar em sp/sp , cep 01319-070 ? vende por R$150,00?
  17. Placa de vídeo com saída pra TV? Placa de vídeo com saída pra TV de uns R$200,00 dá para ser ver filmes na TV com uma boa definição e resolução? Senão, qual faixa de valor eu consigo uma boa placa para este intuito ? Grato.
  18. JackSSA, Bem, o modem é da Linksys. Como eu faço via software ou via hardware e sem ter problemas futuros com a TVA ? Grato.
  19. Olá, Tem algum macete pra usar Usar IP:TCP da TVA Ajato doméstico publicamente? Por exemplo: http://200.160.96.198:77 ftp://200.160.96.198:777 Eu configurei no meu IIS mas só funciona localmente, externamente nem pinga. Tenta cadastrar no no-ip.com meu IP e usar o endereço de nome, mas também não deu certo. Tks.
  20. Oi, você pode inserir o símbolo pelo menu iniciar/programas/acessórios/Ferramentas do sistema / Mapa de caracteres Ou decora qual o código ASCII do símbolo e insere-o manualmente usando a combinação: ALT + CÓDIGO ASCII exemplo: ALT + 167 = º ALT + 168 = ¿ ALT + 173 = ¡ http://www.jrfaq.com/tabela_ascii.asp :)
  21. bem, quem está usando é meu irmão. ele não reclamou. mas nas teclas você tem que fazer um pouco mais de força para digitar. o grande diferencial dele é mesmo a limpeza e beleza ^_^
  22. ué, é só você fazer o que eu falei: - configurar o teclado, com idioma português brasil e layout portugal. faça isto pelo menu iniciar / configurações / painel de controle / opções regionais e de idioma / guia idiomas / botão detalhes / botão adicionar depois deixei como padrão no combo : Português (Brasil) - Portugal boa sorte ^_^
  23. colega, funcionou assim agora: IDIOMA PORTUGUÊS BRASIL LAYOUT PORTUGAL obrigadão e feliz ano novo :laugh: :laugh:
  24. Estas: <> ? '" <> ~^ ç ´`=+-_()*&,.;:/|\[]{} :unsure:
×
×
  • Criar Novo...