Ir para conteúdo
Fórum Script Brasil

MRMB

Membros
  • Total de itens

    180
  • Registro em

  • Última visita

Tudo que MRMB postou

  1. MRMB

    Enviar e-mails

    Matheus-vb6, penso que caso ocorra erro ("corromper") o método de envio irá retornar erro. Contudo, não testei essa situação em específico. T+
  2. Michael Platiní penso que sua situação e bem complicada para resolver mais vou tentar ajudar. No caso a lentidão na nova versão pode ocorrer por causa de diversos fatores. Vou listar alguns, e esses você terá de verificar e análisar. 1 - Verificar se não ocorreu alterações de banco de dados como procedures com loops que estão demorando muito para retornar. Views que passaram a ter mais relacionamentos ficando mais custoso para o banco ou até uma function mal definida. 2 - Alterações no código fonte, loops, coleções (empillhamento) ou sobrecarga. 3 - Diversos acessos ao banco pela aplicação. Em relação ao source safe não sei qual a versão que você utiliza, contudo se for uma versão que conheço terá algumas dificuldades. Outra opção de controle seria o SubVersion com TortoiseSVN Subversion (também conhecido por svn) é um sistema de controle de versão desenhado especificamente para ser um substituto moderno do CVS, que se considera ter algumas limitações. fonte: pt.wikipedia.org/wiki/Subversion TortoiseSVN é um cliente do Subversion para Microsoft Windows. Com código aberto, está licenciado sob GNU General Public License. fonte: pt.wikipedia.org/wiki/TortoiseSVN No caso com SubVersion/TortoiseSVN facilmente você conseguiria retornar código fonte e testar as alterações de um período até encontrar o erro utilizando tags que podem ser criadas. Do mais é isso! T+
  3. MRMB

    Enviar e-mails

    Tem essa função no py.sendmail... Os códigos abaixo é para anexar usando o py.sendmail são os mesmos códigos de exemplos que tem na instalação do py.sendmail Anexo "Comum" Private Sub cmdAnexo_Click() On Error Resume Next CDlg.Filter = "Todos os Arquivos|*.*" CDlg.ShowOpen If Err.Number = 0 Then 'Não Cancelou lstAnexos.AddItem CDlg.FileName End If On Error GoTo 0 End Sub Anexo Imagem On Error Resume Next CDlg.Filter = "Arquivos de imagem|*.jpg;*.gif;*.bmp;*.jpeg" CDlg.ShowOpen If Err.Number = 0 Then 'Não Cancelou lstImagens.AddItem CDlg.FileName txtMensagem.Text = txtMensagem.Text & "<img src=" & Chr(34) & "cid:" & lstImagens.ListCount - 1 & Chr(34) & " />" End If On Error GoTo 0 Na hora de enviar anexa todos os itens... Private Sub cmdEnviar_Click() Set k = CreateObject("Py.SendMail") k.SMTPServer = txtServidor.Text k.Recipient = txtNomePara.Text k.To = txtEmailPara.Text k.Sender = txtNomeDe.Text k.From = txtEmailDe.Text k.Cc = txtCc.Text k.Bcc = txtBcc.Text k.Subject = txtAssunto.Text k.Body = txtMensagem.Text k.PureText = chkTextoPuro.Value 'Em caso de autenticação 'MsgBox "Informar usuário e senha!" 'k.User = "seu_email" 'k.Password = "senha" ' INICIO - TODOS OS ARQUIVOS For i = 0 To lstAnexos.ListCount - 1 k.AttachFile lstAnexos.List(i) Next i For i = 0 To lstImagens.ListCount - 1 k.InsertImage lstImagens.List(i) Next i ' FIM retorno = k.Send() lblRetorno = "Retorno: " & retorno Debug.Print retorno End Sub T+ pode testar que é fino...irá funcionar sem problema.
  4. MRMB

    Enviar e-mails

    Só para constar....resolvi o problema de envio de email assim.. Adicionei referência no projeto a Microsoft CDO for Windows 2000 Library que fica no System32 (cdosys.dll). O melhor de usar essa "biblioteca" é que funciona no Windows 7 32 e 64 bits sem maiores dificuldades. Private Sub Command1_Click() Dim MailMsg As CDO.Message Dim MailConf As CDO.Configuration Dim MCFields As Object Set MailMsg = New CDO.Message Set MailConf = New CDO.Configuration Set MCFields = MailConf.Fields MCFields.Item("http://schemas.microsoft.com/cdo/configuration/sendusing") = 2 ' SMTP MCFields.Item("http://schemas.microsoft.com/cdo/configuration/smtpserver") = "smtp.exemplo.com.br" MCFields.Item(cdoSMTPAuthenticate) = cdoBasic MCFields.Update Set MailMsg.Configuration = MailConf MailMsg.TextBody = Text2.Text MailMsg.Subject = "Título do email" MailMsg.To = "email destino" MailMsg.From = "email origem" MailMsg.AddAttachment "Caminho do arquivo a ser anexado" MailMsg.Send End Sub Ficou fino! Também testei o Py.SendMail e o mesmo também funcionou. Mas achei o código acima mais prático. T+
  5. Caros, Gostaria de saber se tem alguma função no VB6 que retornar o tamanho de uma arquivo que vou fazer o download. Utilizo o código abaixo para fazer o download e esta fino! Funcionando. Public Sub DownloadAtualizacao() On Error GoTo MostrarErro ' Gostaria de "pegar" o tamanho do aquivo antes de executar a linha abaixo URLDownloadToFile 0, _ "http://files.pwtre.com.br/ext/update/200100915.zip", _ App.Path & "\200100915.zip", 0, 0 On Error GoTo 0 Exit Sub MostrarErro: Call MsgBox("Erro na realização do download" _ & vbCrLf & "" _ & vbCrLf & "Número do erro: " & Err.Number _ & vbCrLf & "Descricão do erro: " & Err.Description _ & vbCrLf & "Método: DownloadAtualizacao" _ , vbCritical, "Atualização") End End Sub No caso utilizaria esse tamanho para gerar progressbar. T+ Abraço.
  6. Então kuroi o programa é fino! Até o momento 100% Realizei testes com Windows 7 32 bits, registro de DLL's e OCX e funcionou! Caso ocorra algum problema coloco aqui no fórum. Falta realizar testes com Windows 64 bits. T+
  7. kuroi, realizei alguns testes com sucesso usando uma ferramenta gratuita CPAU. Até o momento realizei teste com Windows XP, vou verificar no Windows 7 (32/64) também. É bem pratico logar com usuário e senha em uma máquina no domínio. http://www.joeware.net/freetools/tools/cpau/index.htm Exemplos: http://www.novell.com/coolsolutions/tip/15659.html Abaixo utilização do CPAU pelo VB6 Private Sub cmdUnRegDLL_Click() ' Desregistrar - DLL Dim teste As Double teste = Shell("C:\CPAU.EXE -u ""Usuario"" -p 123456 -ex ""regsvr32.exe /u /s C:\Teste.dll"" -profile -wait", vdHide) End Sub Private Sub cmdRegDLL_Click() ' Registrar - DLL Dim teste As Double teste = Shell("C:\CPAU.EXE -u ""Usuario"" -p 123456 -ex ""regsvr32.exe /s C:\Teste.dll"" -profile -wait", vdHide) End Sub Private Sub cmdUnRegComponente_Click() ' Desregistrar - Componente Dim teste As Double teste = Shell("C:\CPAU.EXE -u ""Usuario"" -p 123456 -ex ""regsvr32.exe /u C:\componente.ocx"" -profile -wait", vdHide) End Sub Private Sub cmdRegComponente_Click() ' Registrar - Componente Dim teste As Double teste = Shell("C:\CPAU.EXE -u ""Usuario"" -p 123456 -ex ""regsvr32.exe C:\componente.ocx"" -profile -wait", vdHide) End Sub
  8. Andre_Luiz_S penso que do jeito que você quer não irá funcionar. Contudo você pode definir o caminho "fixo" mesmo ou registrar a DLL no system32 (Acho que essa é melhor opção) assim não será necessário passar o parâmetro. t+
  9. Então kuroi vou verificar a opção do TAB que comentou. Estou fazendo outros testes também. Por exemplo o comando abaixo esta registrando/desregistrando as DLL no dominio caso o "Usuario Dominio" tenha permissão. Contudo tem dois problemas ainda: 1 - Ao executar o código abaixo abre algumas janelas do cmd.exe (2 janelas) 2 - Utilizando a opção vbHide na execução do cmd.exe "parece" que o registro não funciona. Private Sub Command1_Click() Dim dblAux As Double dblAux = Shell("cmd.exe", vbMinimizedFocus) ' vbHide Sleep 2000 hWindow = FindWindow(vbNullString, "cmd.exe") SetForegroundWindow hWindow SendKeys "runas /user:""Usuario Dominio"" ""regsvr32.exe /u C:\TesteDLLReg.dll""" SendKeys "{ENTER}" Sleep 1000 SendKeys "123456" SendKeys "{ENTER}" Sleep 1000 End Sub teria alguma opinião/dica para melhorar o código acima?
  10. Obrigado pela dica esta ajudando e muito. contudo aparece a tela abaixo e não o DOS: ' Tela acima aparece ao executar a linha abaixo lngAux = ShellExecute( _ Me.hwnd, "runas", _ "C:\WINDOWS\system32\regsvr32.exe", "C:\EXTributacaoIPI.dll", _ "C:\", 0) ' Ao chegar neste ponto a janela já "fechou" Sleep 2000 ' Para "dormir" 2 segundos hWindow = FindWindow(vbNullString, "C:\WINDOWS\system32\regsvr32.exe") SetForegroundWindow hWindow SendKeys "123456" SendKeys "{ENTER}" No caso não consegui informar a senha. Verificando a imagem da tela precisaria selecionar o "Administrador" e informar a senha.
  11. Anderson Angolano, penso que o código abaixo resolve o seu problema. Irá ignorar o text caso não tenha nada informado. Private Sub cmdConsulta_Click() ' Exemplo 01 ' Verifica se parâmetros inteiros If Val(Text1) > 0 Then MsgBox "Coloca o filtro 1 para consulta aqui!" End If If Val(Text2) > 0 Then MsgBox "Coloca o filtro 2 para consulta aqui!" End If ' Fim parâmetros inteiros. ' Exemplo 02 ' Verifica se parâmetros string If Trim(Text1) <> Empty Then MsgBox "Coloca o filtro 1 para consulta aqui!" End If If Trim(Text2) <> Empty Then MsgBox "Coloca o filtro 2 para consulta aqui!" End If ' Fim parâmetros string. End Sub T+ abraço.
  12. Olá pessoal, Estou com o seguinte problema. Tenho a necessidade de registrar DLL/OCX pelo VB6. No caso, seria um executável para atualizar as DLL/OCX do sistema e é necessário desregistrar as DLL/OCX (Antigas) e registrar novas DLL/OCX nas máquinas dos usuários. Estou fazendo teste com a função ShellExecute e utilizando "runas" para executar como administrador. Option Explicit Private Declare Function ShellExecute Lib "shell32.dll" Alias "ShellExecuteA" (ByVal hwnd As Long, ByVal lpOperation As String, ByVal lpFile As String, ByVal lpParameters As String, ByVal lpDirectory As String, ByVal nShowCmd As Long) As Long ' variáveis de controle de erros. Private Const ERROR_FILE_NOT_FOUND = 2& Private Const ERROR_PATH_NOT_FOUND = 3& Private Const ERROR_BAD_FORMAT = 11& Private Const SE_ERR_ACCESSDENIED = 5 Private Const SE_ERR_ASSOCINCOMPLETE = 27 Private Const SE_ERR_DDEBUSY = 30 Private Const SE_ERR_DDEFAIL = 29 Private Const SE_ERR_DDETIMEOUT = 28 Private Const SE_ERR_DLLNOTFOUND = 32 Private Const SE_ERR_NOASSOC = 31 Private Const SE_ERR_OOM = 8 Private Const SE_ERR_SHARE = 26 Private Sub Command1_Click() Dim lngAux As Long lngAux = ShellExecute( _ Me.hwnd, "runas", _ "C:\WINDOWS\system32\regsvr32.exe", "/u C:\EXTributacaoIPI.dll", _ "C:\", 0) If lngAux <= 32 Then Select Case lngAux Case 0 MsgBox "Out of memory or resources", vbOKOnly Or vbExclamation, "Error" Case ERROR_FILE_NOT_FOUND MsgBox "File not found", vbOKOnly Or vbExclamation, "Error" Case ERROR_PATH_NOT_FOUND MsgBox "Path not found", vbOKOnly Or vbExclamation, "Error" Case ERROR_BAD_FORMAT MsgBox "Invalid .EXE file", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_ACCESSDENIED ' access denied MsgBox "File access denied", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_ASSOCINCOMPLETE MsgBox "Invalid file name association", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_DDEBUSY MsgBox "DDE busy", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_DDEFAIL MsgBox "DDE transaction failed", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_DDETIMEOUT MsgBox "DDE timeout", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_DLLNOTFOUND MsgBox "DLL not found", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_NOASSOC MsgBox "No associated application", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_OOM ' out of memory MsgBox "Out of memory", vbOKOnly Or vbExclamation, "Error" Case SE_ERR_SHARE MsgBox "Sharing violation", vbOKOnly Or vbExclamation, "Error" Case Else MsgBox "Unknown error " & lngAux, vbOKOnly Or vbExclamation, "Error" End Select End If End Sub Ao executar o código acima é exibida a tela pedindo a senha de administrador. No caso preciso que não seja solicitado essa senha. Caso alguém saiba como passar senha de determinado usuário pelo código também ajudaria. Desde já agradeço atenção!
  13. MRMB

    Filtro datagrid sql

    Thundera, considerando que o campo "preço" no banco de dados não sendo texto e sim um valor float. Seria melhor não utilizar "LIKE" para validar o campo "preço" no filtro. E sim verificar se é maior ou igual ao valor informado pelo usuário. Seria mais "confiável". Tenta fazer essa alteração se erro persistir posta mais informações como dados retornado no "select" para que possamos ajudá-lo. T+
  14. Além de colocar compatibilidade com Windows XP SP3 e bom desativar o temas visuais na propriedade do atalho para visual basic 6. Assim não ocorre erro ao desenhar os componentes no formulário.
  15. Penso que a melhor solução seja utilizar o evento "Validate" do componente Textbox 2.
  16. Rapaz, da uma olhada no link abaixo: VB6 - Preenchendo o MSFlexGrid mais rápido No caso não irá tratar a situação que mencionou em especifico. Mas com os conceitos conseguirá fazer o que deseja. T+
  17. Pessoal, Consegui verificar para que serve o arquivo. É arquivo de identificação de interface, que define o GUID para cada interface especificada no arquivo IDL. T+
  18. Pessoal, Ao compilar um projeto no Microsoft Visual C++ 6.0, gera alguns arquivos como *.h (Cabeçalho), *.tlb(Biblioteca) e gera um arquivo *_i.c. No caso o que seria este último arquivo e para que serve?
  19. A instrução SQL poderia ser feito conforme abaixo: SQL = "UPDATE USUARIO SET NOME=" & txtuser(0).Text & ", Cargo=" & txtuser(1).Text & ",Setor=" & txtuser(2).Text & ") WHERE ID=" & ID Considerando o ID texto. Não realizei teste da linha de comando acima, mas, penso que irá funcionar. T+
  20. Lameira penso que seu código esteja quase pronto. Falta somente definir a propriedade top do componente "imgpri". imgpri.Width = Me.Width - 9500 ' Largura da imagem imgpri.Height = Me.Height + 2200 ' Tamanho da imagem imgpri.Left = Me.Left + 5000 ' Posição referente a ao lado esquerdo. imgpri.Top = Me.Top ' Defina o Top que deseja utilizar, coloquei "Me.Top" como exemplo somente. Penso que esse ajuste já deva resolver seu problema. Testei com sucesso este ajuste. T+ Abraço.
  21. MRMB

    C e Banco de Dados

    Samp, no caso estou usando VS 2005. Logo a classe utilizada para instanciar o objeto de conexão é "msado” do próprio VS 20005. Espero que ajude.
  22. MRMB

    C e Banco de Dados

    Caro Samp, não tem o MySQL instalado, logo não testei o código abaixo. Penso que as linhas de comando abaixo possam ajudar você na conexão que almeja fazer. Estou utilizando o Visual Studio 2005 para conectar no SQL Server. O que fiz no código abaixo foi simplesmente alterar os parâmetros da conexão que uso para o MySQL. Espero que ajude. _ConnectionPtr con[1]; -- "con", objeto de conexão con[1].CreateInstance(__uuidof(Connection)); -- "Aux", variável string. Informa os parâmetros da conexão. sprintf(Aux,"DRIVER={MySQL ODBC 3.51 Driver};DATABASE=%s;SERVER=%s",Nome_Do_Banco, IP_SERVIDOR_PORTA); -- Informa usuário e senha. Abre a conexão. con[1]->Open(Aux,"admin","123456",adModeUnknown); T+ Abraço
  23. Pessoal, consegui ajustar o problema com ajuda de um amigo. Para resolver o problema criei um projeto em branco no Dev-C++ e adicionei os fontes. Assim consegui compilar com sucesso. Parece que problema ocorre devido a não encontrar "data.c" com referencia a libs. Assim estando em um projeto esse problema não ocorre. T+ Abraço.
  24. Pessoal, Estou com problema para compilar utilizando Dev-C++ 4.9.9.2. Criei um arquivo "Data.h", onde declarei a estrutura e os protótipos das funções. Depois criei outro arquivo "Data.c", onde consta as implementações das funções definidas no cabeçalho("Data.h"). Em um terceiro arquivo, "testedata.c" estou realizando um include do "Data.h" para utilizar as funções. Os três arquivos estão na mesma pasta. Contudo ao compilar o "testedata.c" esta ocorrendo os erros abaixo: [Linker error] undefined reference to `Inicia' [Linker error] undefined reference to `Imprime' [Linker error] undefined reference to `Altera' [Linker error] undefined reference to `Imprime' [Linker error] undefined reference to `Altera' [Linker error] undefined reference to `Imprime' [Linker error] undefined reference to `Imprime' ld returned 1 exit status Alguém teria alguma idéia do que esta acontecendo? Abaixo código fonte dos três arquivos. Desde já agradeço quem poder colaborar. Arquivo(Módulo) Data.h typedef int BOOL; #define FALSE 0 #define TRUE 1 #define ANO_MIN_DEF 0 #define ANO_MAX_DEF 9999 struct _Data { char m_cDia; char m_cMes; short m_shAno; short m_shAnoMin, m_shAnoMax; int m_iDiaCorrido; BOOL m_bOK; }; typedef struct _Data Data; Data Inicia(Data dtParam); Data Altera(Data dtParam, char cDia, char cMes, short shAno); void Imprime(Data dtParam); Arquivo(Módulo) Data.c #include <stdio.h> #include "data.h" Data Inicia(Data dtParam) { dtParam.m_shAnoMin = ANO_MIN_DEF; dtParam.m_shAnoMax = ANO_MAX_DEF; dtParam.m_bOK = FALSE; return dtParam; } Data Altera(Data dtParam, char cDia, char cMes, short shAno) { dtParam.m_cDia = cDia; dtParam.m_cMes = cMes; dtParam.m_shAno = shAno; if (dtParam.m_shAno >= dtParam.m_shAnoMin && dtParam.m_shAno <= dtParam.m_shAnoMax && dtParam.m_cMes >= 1 && dtParam.m_cMes <= 12 && dtParam.m_cDia >= 1 && dtParam.m_cDia <= 31) { dtParam.m_bOK = TRUE; } else { dtParam.m_bOK = FALSE; } return dtParam; } void Imprime(Data dtParam) { if (dtParam.m_bOK) { printf("%02d/%02d/%04d\n", dtParam.m_cDia, dtParam.m_cMes, dtParam.m_shAno); } else { printf("??:??:????\n"); } } Arquivo(Módulo) testedata.c #include <stdio.h> #include "data.h" int main() { Data dtHoje; Data dtPagamento; dtHoje = Inicia(dtHoje); Imprime(dtHoje); dtHoje = Altera(dtHoje, 1, 12, 2001); Imprime(dtHoje); dtHoje = Altera(dtHoje, 1, 13, 2001); Imprime(dtHoje); dtPagamento.m_cDia = 55; Imprime(dtPagamento); return 0; }
  25. Pessoal, Estou compilando um projeto C++ 2005 e gerando DLL. Esta DLL é gerado no diretório "C:\Projeto\PV001\PV001.dll". Caso tentar registrar ou desregistrar essa DLL nesse diretório vou conseguir com sucesso! Contudo se mudar/copiar a mesma DLL para outro diretório gera erro abaixo ao tentar registrar a DLL: --------------------------- RegSvr32 --------------------------- Falha em LoadLibrary("C:\V001.dll") - Não foi possível encontrar o módulo especificado. --------------------------- OK --------------------------- Alguém teria alguma idéia do porque não esta registrando em uma pasta diferente da original? Desde já agradeço atenção.
×
×
  • Criar Novo...