Ir para conteúdo
Fórum Script Brasil

kuroi

Membros
  • Total de itens

    7.184
  • Registro em

  • Última visita

Tudo que kuroi postou

  1. você já testou outros pendrives nesse mesmo pc pra ver o q acontece?? e tb já testou esse mesmo pendrive em otros pc pra ver o q acontece?? de repente pode ser a usb tb, ia ser bom testar em outras.
  2. kuroi

    duvida neste codigo

    vixe, tinha esquecido desse tópico aqui. so to vendo sua reposta hj, se ainda não tiver resolvido... mas como não estou declarando me mostre como declarar porque eu to chamando la na funcao pesquisa int indices ali onde ta escrito int indices é so a definicao do parametro. aquilo la so significa q a funcao espera q seja passado um parametro do tipo array de int e q, -> internamente <- dentro da funcao, você devera trata-lo pelo nome de indices. entretanto, você ta tentando passar pelo parametro uma variavel chamada indices, mas ela realmente não foi declarada, e não esta visivel pelo main(). por isso o erro. não sei o direito o q você quer fazer, mas você teria q criar um array de int (não necessariamente chamado indices) e passa-lo como parametro pra funcao pesquisa().
  3. cara, isso é javascript, não é java.
  4. cara, isso é javascript, não é java.
  5. é meio complicado, justiceira, tem uns jeitos ate faceis, mas não sei se vai fazer td do jeito q você quer. tipo, você poderia fazer um codigo pra aumentar o width e o heigth de todos os objetos do formulario. nesse link aqui você encontra um codigo q faz isso no resize do form: http://www.vbforums.com/showthread.php?t=1...;highlight=zoom mas por exemplo, esse codigo aumenta o tamanho dos controles, mas não aumenta o tamanho da fonte dentro deles, não vai dar a impressao de zoom. você teria q alterar o codigo pra mudar o tamanho da fonte de acordo com o tamanho do objeto. e, por exemplo, se você tiver uma picturebox, ele aumenta o tamanho do picture, mas não da zoom na imagem, você teria q implementar um codigo de zoom no picturebox tb. agora, se você quer somente essas tres opcoes, ampliar, normal e reduzir, ai seria mais simples, você poderia definir os tamanhos q você quer em cada uma dessa opcoes, e simplesmente trocar. exemplo, se em reduzir, você quiser q os controles tenham 70% do tamanho, você multiplica o width e o height deles por 0,7.
  6. justiceira, tudo isso você ve na hora de fazer o select. então deve ser por isso q tava saindo repetido. então, você teria q fazer um select agrupado, tipo assim: Set TBatividade = BancoDeDados.OpenRecordset("Select forum From sua_tabela Group By forum", dbOpenDynaset) ai, no exemplo, se os nomes dos forums estiverem num campo chamado forum, então os nomes virao agrupados. então, se o forum hardware, aparecer 3 vezes na tabela, no select, vira apenas 1. o problema disso, é q eu vi q você preenche outros combos com o mesmo recordset. ai você teria q mudar essa parte do codigo, você teria q chamar esse select so pra carregar o combo dos nomes dos forums. pra carregar os outros combos, você teria q abrir o recordset novamente, da forma como estava fazendo antes. isso teria q ser resolvido com aquele codigo q passei no post de cima: Set TBatividade = BancoDeDados.OpenRecordset("Select * From [cadastro de atividades] Where Campo = '" & Comboativ.Text & "'", dbOpenDynaset) veja ai, qualquer coisa poste.
  7. é, ele disse q fez isso manualmente. ele estudou a estrutura do arquivo e arrumou os textos. como ele disse, cada campo ocupa um espaco, você pode separar com mid(). sabendo disso, o q você precisa saber agora é qual o espaco q ocupa cada campo e depois é so separar. quando eu tiver um tempo aqui, vo ver se do uma estudada nesse seu arquivo. se a gente trocar os caracteres 0 por espaco, poderemos usar o mid().
  8. você conhece a tabela asccii, certo?? cada caracter tem um numero. a letra "a" minuscula é o caracter numero 97 por exemplo. o caracter 0 significa final de string. em textos significa q o texto terminou. mas em arquivos binarios, é usado pra respresentar os dados como qualquer outro caracter. não sei de qual bd veio esse seu arquivo .dat, mas imagino q eles usem o caracter 0 pra separar os campos, o qualquer coisa assim. quando você abre o arquivo pra Input no visual basic, ele espera q seja um texto, por isso quando ele encontra o caracter 0 no meio do texto, ele entende q o texto terminou e para de ler. ou ele sabe de qual banco veio seu arquivo .dat, importou os dados e depois extraiu o txt pra vc, ou então, ele deve ter entendido a estrutura do arquivo .dat, e fez alguma funcao pra ler o arquivo e reescreve-lo alinhado, ai nesse caso, eu diria q esse cara deve ser bem locao pra interpretar um arquivo binario. ou ainda, esse arquivo .dat talvez esteja numa estrutura q seja relativamente conhecida, e gente q tenha finalidade com ela poderia conseguir arruma-lo facil pra você. o melhor seria você tentar pedir explicacao pra esse cara q arrumou o arquivo pra você da outra vez. e se um dia ele te contar o q ele fez, volta aqui pra me contar, q eu tb queria saber. seria mais o menos assim: Function eu() Dim b As Byte Dim l As Long, i As Long Open App.Path & "\PDVPPROD.dat" For Binary Access Read As #1 Open App.Path & "\pdvprod1.txt" For Binary Access Write As #2 l = LOF(1) For i = 0 To l - 1 Get #1, , b Put #2, , b Next Close #1 Close #2 End Function[/code] na verdade, você poderia copiar o conteudo todo de uma vez, q iria muito mais rapido: [code]Function eu() Dim b() As Byte Dim l As Long Open App.Path & "\PDVPPROD.dat" For Binary Access Read As #1 Open App.Path & "\pdvprod1.txt" For Binary Access Write As #2 l = LOF(1) If l Then ReDim b(1 To l) As Byte Get #1, , b() Put #2, , b() End If Close #1 Close #2 End Function entretanto, costumo ter problemas com esse codigo, ele insere uns espacos a mais no novo arquivo. o q se costuma fazer é usar o codigo de cima, ou ainda dividir a cada 1024 bytes, o q costuma levar menos tempo tb.
  9. anderson, mas o BeginTrans não causa erro se você chamar de novo antes de terminar a transacao atual. não costumo usar esses metodos, mas se não me engano ele abre uma nova transacao e a anterior fica pendente. quando você chamar o commit ele fecha a ultima q você abriu e volta pra anterior. imagino q seja o mesmo conceito de pilha - last in first out. bom, mas talvez isso varie de acordo com o banco de dados, o provider, ou a forma como você abre a conexao. se você tenta o BeginTrans enquanto uma transacao ta aberta, ele ta te retornando erro?? de qualquer forma, se você não quer abrir uma segunda transacao por forma de controle ou se ele esteja te retornando erro, uma forma de controlar, seria usar uma variavel. quando você chama o BeginTrans, ele sempre te retorna o numero da transacao atual. exemplo, se você abrir a segunda trans, ele te retorna 2. ai você gravaria esse valor numa variavel. ai quando você chamasse o commit ou o rollback, você subtraia dela. ou se você quer deixar sempre no maximo uma trans aberta, você usava uma variavel boolean. porque acho q pelo connection mesmo não tem como saber.
  10. juntei os topicos, evita ficar criando varios topicos sobre o mesmo assunto. mas se você quer transformar o dat em txt, tudo o q você tem q fazer é renomear o arquivo (F2 no windows explorer) e trocar ".dat" por ".txt". mas abri o seu arquivo .dat aqui num editor binario e vi q o motivo de esse codigo não funcionar é q o seu arquivo ta cheio de caracteres 0 no meio. e o visual basic entende caracter 0 como fim de arquivo. por isso, ele so copia os primeros 30 caracteres, pois o proximo caracter é 0 e ele entende q o txt acabou. se você quer copiar o conteudo do arquivo (o q teria o mesmo efeito de copiar e colar o arquivo no explorer), acho q você poderia abrir como binario e ler byte por byte.
  11. eduardo, qual o sistema operacional q você usa?? tenta o seguinte codigo: Report.DiscardSavedData Dim x As CRAXDRT.Report Dim y As CRAXDRT.Report Set x = Report.OpenSubreport("subreportDesvios") Set y = Report.OpenSubreport("subreportInterferencias") Report.FormulaSyntax = crCrystalSyntaxFormula x.FormulaSyntax = crCrystalSyntaxFormula y.FormulaSyntax = crCrystalSyntaxFormula 'inserindo filtro para o primeiro sub report x.RecordSelectionFormula = "{T_NODIRECTRUN.DATA} in Date (" & DataInicio & ") to Date (" & DataFinal & ") and {T_NODIRECTRUN.RESPONSAVEL}= '" & ORIGEM1 & "' Or {T_NODIRECTRUN.DATA} in Date (" & DataInicio & ") to Date (" & DataFinal & ") and {T_NODIRECTRUN.RESPONSAVEL}= '" & ORIGEM2 & "'" 'FORMULA 'inserindo filtro para o segundo sub report y.RecordSelectionFormula = "{T_INTERFERENCIAD12.DATA} in Date (" & DataInicio & ") to Date (" & DataFinal & ") and {T_INTERFERENCIAD12.RESPONSAVEL}= '" & ORIGEM1 & "' Or {T_INTERFERENCIAD12.DATA} in Date (" & DataInicio & ") to Date (" & DataFinal & ") and {T_INTERFERENCIAD12.RESPONSAVEL}= '" & ORIGEM2 & "'" 'FORMULA CRViewer1.ReportSource = Report[/code] se o erro continuar, então, tenta capturar as duas formulas como elas ficaram e poste ai. e ai teste pra ver o q acontece se vc, dentro do design do report, abrir o editor de formula e adicona-las la.
  12. kuroi

    Código.. como resolvo?

    so agora entendi q você tava herdando o cliente especial do cliente, mas acho q o melhor é ter uma classe so e, pra diferenciar, você faria como eu disse no post de cima. bom, talvez a ideia do exercicio, do seu professor seja diferente do q to imaginando, mas ainda acho q isso é a melhor forma. se a unica diferenca entre o cliente e o cliente especial é um unico valor, acho uma coisa completamente sem sentido criar uma nova classe somente pra isso. alias, mesmo se fossem mais diferencas. se o cliente especial é tb um cliente, tinha q ser uma coisa so. heranca não serve pra usar dois objetos diferentes como se fosse o mesmo. o melhor seria usar uma classe so e ai você pudia por uma propriedade pra identificar se é cliente especial ou não.
  13. você ta usando vba dentro do access?? e o campo é autonumeracao?? bom, se fosse sql, você podia usar o comando truncate table, mas acho q o access não aceita esse comando. quando eu preciso q os indices resetem, eu sempre tenho q apagar o campo autonumeracao e criar de novo. não sei se existe outra forma. mas talvez você pudesse deixar o codigo do create table pronto no seu form, e quando for pra limpar a tabela você da um drop table e depois chama o create. bom, isso é uma gambiarra bem besta, mas não sei se existe alguma forma melhor. mas fahledu, pelas informacoes q você passou, concluo q você teja usando mesmo vba no access, mas quando for postar aqui na sala vba, tenta sempre especificar qual o software q você ta usando (word, access, excel, etc) q fica mais facil pra gente. de qualquer forma, moverei seu tópico pra access, quem sabe se alguém la sabe alguma solucao melhor. mas dexarei o link aqui em vba, já q o tópico tem relacao com as duas salas.
  14. salvador?? hehe quem é q fica contando essas historias por ai?? então, cribeiro, eu tinha visto seu tópico ontem, e na hora não pensei em nenhuma solucao, e fiquei pensando aqui, mas acabei esquecendo de vir responder, foi mal. mas se eu entendi... o relatorio tem q mostrar as ultimas alteracoes do funcionario q foi promovido no mes, mesmo se as ultimas alteracoes tenham acontecido antes do comeco do mes?? se for isso, é meio complicado, mas pensei numas gambiarras aqui... seria o seguinte, você filtra o relatorio pra todos os registros q sejam desse mes ou de datas anteriores. então, você faz um grupo pra cada funcionario. então entre no menu Report -> Sort Records... e la dentro, ordene pela data, dentro do grupo do funcionario. então, no details, você insere as linhas q você quer normalmente. ate aqui, ele vai listar os dados q você quer. entretanto, ele vai listar todas as alteracoes e não so as tres ultimas. então, o q você faz... la no painel da esquerda onde aparecem os nomes das sections, clique com o botao direito na section do details onde estao os dados. e clique na opcao Format Section. na janela q vai abrir, seleciona a opcao Supress (No Drill-Down). do lado dessa opcao deve ter um botao pra edicao da formula. clique nesse botao. na janela de formula q vai abrir, la em cima, mude para Basic Syntax. ai coloque essa formula: If {tabela.data_alteracao} = NthLargest (1, {tabela.data_alteracao}, {tabela.codigo_func}) Or _ {tabela.data_alteracao} = NthLargest (2, {tabela.data_alteracao}, {tabela.codigo_func}) Or _ {tabela.data_alteracao} = NthLargest (3, {tabela.data_alteracao}, {tabela.codigo_func}) Then Formula = False Else Formula = True End If[/code] e pronto, ele deve mostrar somente as tres alteracoes mais recentes. so lembra de mudar tabela pelo nome da sua tabela. mas ainda tem um problema. se a ultima alteracao do cara aconteceu antes desse mes, ele vai aparecer tb. se você quer saber so os q foram alterados nesse mes, então, o melhor seria você passar por parametro da data do primero dia do mes. exemplo pra maio de 2010, passe 01/05/2010. então, naquele codigo do Supress, você podia alterar pra isso: [code]If NthLargest (1, {tabela.data_alteracao}, {tabela.codigo_func}) < {?seu_campo_parametro} Then Formula = True Else If {tabela.data_alteracao} = NthLargest (1, {tabela.data_alteracao}, {tabela.codigo_func}) Or _ {tabela.data_alteracao} = NthLargest (2, {tabela.data_alteracao}, {tabela.codigo_func}) Or _ {tabela.data_alteracao} = NthLargest (3, {tabela.data_alteracao}, {tabela.codigo_func}) Then Formula = False Else Formula = True End If End If deve ser mais o menos isso, veja ai. o problema com essa forma é q você não vai poder fazer contagens, com Summary Fields, etc. mas veja se isso ajuda, qualquer coisa poste ai.
  15. se não me engano é isso: If cn.State = 1 Then 'Aberto Else 'Fechado End If[/code] onde cn é o seu objeto ADODB.Connection. mas eu diria q o melhor é abrir o objeto so uma vez, assim q o programa for carregado, e fechar so no final, quando o programa for fechado.
  16. kuroi

    Acesso usuário/senha

    jefferson, mas o vendedor digita o nome dele pra logar, não?? ou então, quando você procurar a senha do usuario na planilha, você poderia dexar o nome dele escrito em alguma celula na mesma linha, de modo q você conseguisse acessa-la pra pegar o nome. porque o nome da planilha é o mesmo do usuario, certo?? então, naquele codigo q eu passei, no lugar de nome_da_planilha você passava o nome do usuario.
  17. kuroi

    Acesso usuário/senha

    jefferson, quando você for postar um codigo, ponha dentro da tag CODE, q fica mais facil pra gente ler. tipo assim: [c.o.d.e]ponha seu codigo aqui[/c.o.d.e] so q sem os pontos pra escrever code. mas pra abrir a planilha de acordo com o nome, você quer dizer q são varias planilhas dentro do mesmo .xls?? então acho q seria tipo assim: Worksheets(nome_da_planilha).Visible = True Worksheets(nome_da_planilha).Activate[/code]
  18. justiceira, mas isso ocorre quando você chama o preencher_combo() ou o CarregarCombo()?? e, olhando melhor agora seu codigo... não sei se entendi direito o q você quer... no clique no Comboativ, você chama uma sub q preenche o proprio Comboativ. ele não devia preencher um segundo combo??
  19. então, justiceira, na linha q eu passei, Campo foi so um nome de exemplo q eu escrevi. o q você tem q por no lugar de Campo é o nome do campo pelo qual você quer filtrar. no exemplo dos estados q você comentou. na primero combo, você selecionou SP, por exemplo. na tabela referente ao segundo combo, deve existir algum campo la dentro q aponta q o registro é de SP. seria esse campo q você teria q usar na query. tenta ai, qualquer coisa poste.
  20. então, justiceira, mas você tem q adicionar o filtro. o q é "cadastro de atividades"?? é o nome de uma tabela ou uma consulta?? não lembro muito bem como se faz em dao, mas acho q seria tipo isso o q você teria q fazer: Set TBatividade = BancoDeDados.OpenRecordset("Select * From [cadastro de atividades] Where Campo = '" & Comboativ.Text & "'", dbOpenDynaset)
  21. porque você adicionou o & no printf()?? olha la os codigos dos dois primeros posts. o printf() não deve receber o &, a não ser q você quera escrever o endereco da variavel na tela.
  22. crisrola, veja se esse tutorial ajuda: http://www.macoratti.net/excel_vb.htm
  23. todo input tem o metodo focus() q posiciona o cursor nele.
  24. é, aqui não vai não... to lembrando agora, tb não é a primera vez q isso ocorre. tive esse problema com o bit torrent tb a um tempo atras. usei a opcao de dentro do programa q diz "Apagar Torrent e Excluir Arquivos" pra um torrent de 4GB, e ele apagou os arquivos mas não liberou o espaco. agora não uso mais essa opcao, apago os torrents na mao mesmo pelo explorer. e acho q ate hj não consegui esses 4GB de volta, mas na epoca não dei tanta atencao porque tinha bastante espaco livre no hd. sendo assim são 5GB perdidos... bom, vou tentando otras coisas aqui... vou fazer uma busca pra ver se encontro outros programas, algum outro no estilo do ccleaner, ou coisa assim, ai se eu conseguir resolver, posto aqui, valeu leandro.
  25. não sei em q parte do codigo você faz essa comparacao, mas tenta comparar usando CDate(), pra fazer a conversao para data. exemplo: If CDate(Worksheets(strPlanilha).Cells(intContador,1)) >= CDate(data_pesquisada) Then
×
×
  • Criar Novo...