Ir para conteúdo
Fórum Script Brasil

hencker

Membros
  • Total de itens

    165
  • Registro em

  • Última visita

Posts postados por hencker

  1. Alguém sabe como funciona a função logn do Delphi?

    Ela é uma função para logaritmo na base dez ou para logaritmo neperiano (natural).

    Tipo, a função abaixo faz o que:

    ac := 0.71*(logn(10,(79.4/ac1)));

    AC = 0,71 * LN (10/(79,4/ac1)) => AC é igual a 0,71 vezes o logaritmo neperiano (natural) de dez sobre setenta e nove virgula quatro sobre ac1
    ou

    AC = 0,71 * Log(10/(79,4/ac1)) => AC é igual a 0,71 vezes log (na base dez) de dez sobre setenta e nove virgula quatro sobre ac1
  2. Bom dia!

    Tenho a seguinte SP no meu banco:

    ALTER PROCEDURE dbo.RetornaID
        @NATUREZA Int,
        @FOLHA Char(5),
        @LIVRO Char(5),
        @ABERTURA Char(1),
        @ENCERRAMENTO Char(1),
        @SE Char(1),
        @DATA Char(10),
        @Identity int OUT
    AS
        Insert Into tblFichas (NATUREZA_ID, FOLHA, LIVRO, ABERTURA, ENCERRAMENTO, SE, DATA) Values (@NATUREZA, @FOLHA, @LIVRO, @ABERTURA, @ENCERRAMENTO, @SE, @DATA)
        SET @Identity = SCOPE_IDENTITY()
        RETURN
    E estou usando o seguinte código para acessar a SP:
    public DataTable AdicionaRegistro(string NATUREZA, string FOLHA, string LIVRO, string ABERTURA, string ENCERRAMENTO, string SE, string DATA)
            {
                SqlCommand command = new SqlCommand("RetornaID", conSisAr);
                command.CommandType = CommandType.StoredProcedure;
                command.Parameters.Add("@NATUREZA", SqlDbType.Int, 4, "NATUREZA_ID").Value = NATUREZA.ToString();
                command.Parameters.Add("@FOLHA", SqlDbType.Char, 5, "FOLHA").Value = FOLHA.ToString();
                command.Parameters.Add("@LIVRO", SqlDbType.Char, 5, "LIVRO").Value = LIVRO.ToString();
                command.Parameters.Add("@ABERTURA", SqlDbType.Char, 1, "ABERTURA").Value = ABERTURA.ToString();
                command.Parameters.Add("@ENCERRAMENTO", SqlDbType.Char, 1, "ENCERRAMENTO").Value = ENCERRAMENTO.ToString();
                command.Parameters.Add("@SE", SqlDbType.Char, 1, "SE").Value = SE.ToString();
                command.Parameters.Add("@DATA", SqlDbType.Char, 10, "DATA").Value = DATA.ToString();
                
                SqlParameter parameter = command.Parameters.Add("@Identity", SqlDbType.Int, 0, "ID");
                parameter.Direction = ParameterDirection.Output;
    
                
                try
                {
                    conSisAr.Open();
                    
                    SqlDataAdapter adapter = new SqlDataAdapter(command);
                    DataTable dt = new DataTable();
                    adapter.Fill(dt);
    
    
                    return dt;
                }
                finally
                {
                     conSisAr.Close();               
                }
                    
           }
    No entanto quando eu uso o método abaixo para recuperar os dados o resultado é nulo (dt não restorna nenhum valor...)
    DataTable dtb = AdicionaFicha.AdicionaRegistro(cmbIDAto.Text, txtFolha.Text, txtLivro.Text, "1", "0", "0", dtpDataAto.Text);
                                        
                                        int indice = dtb.Rows.Count;
    
                                        label1.Text = dtb.Rows[indice]["ID"].ToString();

    Erro apresentado (esse erro dá no DataTable dtb, quando eu tento executar):

    System.IndexOutOfRangeException was unhandled

    Message="Não há linha na posição 1."

    Source="System.Data"

    StackTrace:

    em System.Data.RBTree`1.GetNodeByIndex(Int32 userIndex)

    em System.Data.RBTree`1.get_Item(Int32 index)

    em System.Data.DataRowCollection.get_Item(Int32 index)

    em SisAr.frmFichas.btnCadastra_Click(Object sender, EventArgs e) na C:\Documents and Settings\Baroni\Meus documentos\Visual Studio 2008\Projects\SisAr\SisAr\frmFichas.cs:linha 399

    em System.Windows.Forms.Control.OnClick(EventArgs e)

    em System.Windows.Forms.Button.OnClick(EventArgs e)

    em System.Windows.Forms.Button.OnMouseUp(MouseEventArgs mevent)

    em System.Windows.Forms.Control.WmMouseUp(Message& m, MouseButtons button, Int32 clicks)

    em System.Windows.Forms.Control.WndProc(Message& m)

    em System.Windows.Forms.ButtonBase.WndProc(Message& m)

    em System.Windows.Forms.Button.WndProc(Message& m)

    em System.Windows.Forms.Control.ControlNativeWindow.OnMessage(Message& m)

    em System.Windows.Forms.Control.ControlNativeWindow.WndProc(Message& m)

    em System.Windows.Forms.NativeWindow.DebuggableCallback(IntPtr hWnd, Int32 msg, IntPtr wparam, IntPtr lparam)

    em System.Windows.Forms.UnsafeNativeMethods.DispatchMessageW(MSG& msg)

    em System.Windows.Forms.Application.ComponentManager.System.Windows.Forms.UnsafeNativeMethods.IMsoComponentManager.FPushMessageLoop(Int32 dwComponentID, Int32 reason, Int32 pvLoopData)

    em System.Windows.Forms.Application.ThreadContext.RunMessageLoopInner(Int32 reason, ApplicationContext context)

    em System.Windows.Forms.Application.ThreadContext.RunMessageLoop(Int32 reason, ApplicationContext context)

    em System.Windows.Forms.Application.Run(Form mainForm)

    em SisAr.Program.Main() na C:\Documents and Settings\Baroni\Meus documentos\Visual Studio 2008\Projects\SisAr\SisAr\Program.cs:linha 17

    em System.AppDomain._nExecuteAssembly(Assembly assembly, String[]args)

    em System.AppDomain.ExecuteAssembly(String assemblyFile, Evidence assemblySecurity, String[] args)

    em Microsoft.VisualStudio.HostingProcess.HostProc.RunUsersAssembly()

    em System.Threading.ThreadHelper.ThreadStart_Context(Object state)

    em System.Threading.ExecutionContext.Run(ExecutionContext executionContext, ContextCallback callback, Object state)

    em System.Threading.ThreadHelper.ThreadStart()

    InnerException:

    Alguém poderia dar alguma luz?

  3. Estou criando um sistema em C#, com a base de dados Microsoft SQL Server 2000.

    Estou usando o segunte parâmetro para adicionar um novo registro ao meu banco de dados:

    public string AdicionaRegistro(string NATUREZA, string FOLHA, string LIVRO, string ABERTURA, string ENCERRAMENTO, string SE, string DATA)
            {
                SqlCommand sc = new SqlCommand("Insert Into tblFichas (NATUREZA_ID, FOLHA, LIVRO, ABERTURA, ENCERRAMENTO, SE, DATA) Values (@NATUREZA, @FOLHA, @LIVRO, @ABERTURA, @ENCERRAMENTO, @SE, @DATA)", conSisAr);
                sc.Parameters.Add("@NATUREZA", SqlDbType.Int, 4, "NATUREZA_ID").Value = NATUREZA.ToString();
                sc.Parameters.Add("@FOLHA", SqlDbType.Char, 5, "FOLHA").Value = FOLHA.ToString();
                sc.Parameters.Add("@LIVRO", SqlDbType.Char, 5, "LIVRO").Value = LIVRO.ToString();
                sc.Parameters.Add("@ABERTURA", SqlDbType.Char, 1, "ABERTURA").Value = ABERTURA.ToString();
                sc.Parameters.Add("@ENCERRAMENTO", SqlDbType.Char, 1, "ENCERRAMENTO").Value = ENCERRAMENTO.ToString();
                sc.Parameters.Add("@SE", SqlDbType.Char, 1, "SE").Value = SE.ToString();
                sc.Parameters.Add("@DATA", SqlDbType.Char, 10, "DATA").Value = DATA.ToString();
    
                conSisAr.Open();
                try
                {
                    sc.ExecuteNonQuery();
                }
                finally
                {
                    conSisAr.Close();
                }
            }

    No entanto eu necessito retornar o ID, que é gerado automaticamente, que esse novo registro recebeu...

    Alguém tem alguma idéia por favor?

    P.s.: Não estou usando StoredProcedures, portanto acredito que o @@IDENTITY não vá funcionar...

  4. Bom dia pessoal.

    Não sou tão familiarizado com Flash, mesmo assim estou tentando fazer uma pequena animação, um "filminho".

    Eu gostaria de saber como eu faço esse "filminho" iniciar em tela cheia. Qual o código do ActionScript eu devo usar para iniciar ele em tela cheia?

    Estou usando o Flash 8 para produzir essa animação!

    Um forte abraço!

  5. Fazendo um FeedBack, consegui da seguinte forma:

    Onde dizia:

    'Adiciona para o dgvEstacas os dados da estrutura criada
           dtGeometria = New DataTable("Estacas")
           dtGeometria.Columns.Add("ID")
           dtGeometria.Columns.Add("X")
           dtGeometria.Columns.Add("Y")
           dtGeometria.Columns.Add("Z")
           dtGeometria.Columns.Add("A")
           dtGeometria.Columns.Add("W")
           dtGeometria.Columns.Add("S")
    
           dtGeometria.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")
    
           dgvEstacas.DataSource = dtGeometria
           dgvEstacas.Refresh()
    Eu alterei para:
    'Inicia a leitura do arquivo XML contendo os dados das estacas
            Dim xmlDatadoc = New XmlDataDocument()
            xmlDatadoc.DataSet.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")
    
            'Carrega para o DataGridView os dados das estacas da estrutura
            Dim dsGeometria = New DataSet("Geometria DataSet")
            dsGeometria = xmlDatadoc.DataSet
            dgvEstacas.DataSource = dsGeometria.DefaultViewManager
            dgvEstacas.DataMember = "ESTACA"
    Mudei ainda a parte que gerava meu segundo arquivo XML para:
    While y < x
                    Dim Ident As Integer
                    Ident = y + 1
                    'Cria elemento com o nome da estaca em questão
                    writerEstaq.WriteStartElement("ESTACA")
                    'Seta atributos da estaca em questão
                    writerEstaq.WriteElementString("ID", "E" + Ident.ToString())
                    writerEstaq.WriteElementString("X", txtAlturaCoroamento.Text)
                    writerEstaq.WriteElementString("Y", "0")
                    writerEstaq.WriteElementString("Z", "0")
                    writerEstaq.WriteElementString("A", "0")
                    writerEstaq.WriteElementString("W", "0")
                    writerEstaq.WriteElementString("S", "1")
                    'Encerra elemento da estaca em questão
                    writerEstaq.WriteEndElement()
                    'Incrementa contador
                    y += 1
                End While

    Isso funcionou! :D :D :D

  6. Bom dia pessoal,

    Tenho o seguinte código em um programa que eu fiz (segue abaixo):

    Basicamente, o que ele faz é criar dois arquivos XML. No final do código preciso que seja carregado em um DataGridView os dados gerados dentro do segundo arquivo XML.

    Ele até carrega as colunas bonitinho, mas não carrega os dados do meu arquivo XML. Não sei se estou gerando o arquivo XML errado ou algo assim. O arquivo XML gerado abre pelo XMLNotePad, o que significa que ele é um arquivo XML valido.

    Alguém poderia me dar uma luz?

    Private Sub btnCria_Click(ByVal sender As System.Object, ByVal e As System.EventArgs) Handles btnCria.Click
           'btnGrava.Enabled = True
           Try
               'Cria o arquivo XML contendo os dados da estrutura
               Dim writer As New XmlTextWriter(lblCaminhoProjeto.Text, Nothing)
               'Cria a inicialização do arquivo XML
               writer.WriteStartDocument()
               'Seta os comentários das linhas iniciais
               writer.WriteComment("Arquivo contendo dados gerais do projeto de fundações")
               writer.WriteComment("Arquivo gerado pelo programa SCE-BARONI.")
               'Cria o elemento raiz
               writer.WriteStartElement("GeneralidadesEstaqueamento")
               'Cria o elemento com os dados gerais da estrutura
               writer.WriteStartElement("DadosGerais")
               'Preenche com os dados gerais informados
               writer.WriteElementString("NomeObra", txtNomeObra.Text)
               writer.WriteElementString("Observacoes", rtbObservacoes.Text)
               writer.WriteElementString("Data", dtpData.Text)
               'Encerra o elemento DadosGerais
               writer.WriteEndElement()
               'Cria o elemento com os dados dos arquivos
               writer.WriteStartElement("Arquivos")
               'Cria vinculo com o arquivo de projeto
               writer.WriteElementString("Projeto", lblCaminhoProjeto.Text)
               'Cria, caso selecionado pelo usuário, o vínculo com o memorial de cálculos
               If (lblLSimNao.Text = "Sim") Then
                   writer.WriteElementString("Calculo", lblCaminhoFolhaCalculo.Text)
               Else
                   writer.WriteElementString("Calculo", "NS")
               End If
               'Cria elemento contendo o caminho dos dados geométricos da estrutura
               writer.WriteElementString("Geometria", "C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")
               'Encerra elemento Arquivos
               writer.WriteEndElement()
               'Encerra o elemento raiz
               writer.WriteEndElement()
               'Escreve o XML para o arquivo e fecha o objeto escritor
               writer.Close()
    
               'Cria XML com os dados geométricos do estaqueamento
               Dim writerEstaq As New XmlTextWriter("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml", Nothing)
               'Cria inicialização do arquivo XML
               writerEstaq.WriteStartDocument()
               'Seta os comentários das linhas iniciais
               writerEstaq.WriteComment("Arquivo contendo dados geométricos do projeto de fundações")
               writerEstaq.WriteComment("Arquivo gerado pelo programa SCE-BARONI.")
               'Cria elemento geral dos estaqueamentos
               writerEstaq.WriteStartElement("Estacas")
               'Cria atributo com o tipo de cálculo selecionado para a fundação
               'writerEstaq.WriteAttributeString("MetodoCalculo", "Schiel")
               'Cria tantos elementos de estacas quanto informado pelo usuário
    
               'Declara a variável do contador
               Dim x, y As Integer
               x = Convert.ToInt64(txtQtdEstacas.Text)
               y = 0
               'Cria os elementos
               While y < x
                   Dim Ident As Integer
                   Ident = y + 1
                   'Cria elemento com o nome da estaca em questão
                   writerEstaq.WriteStartElement("E" + Ident.ToString())
                   'Seta atributos da estaca em questão
                   writerEstaq.WriteElementString("ID", "E" + Ident.ToString())
                   writerEstaq.WriteElementString("X", txtAlturaCoroamento.Text)
                   writerEstaq.WriteElementString("Y", "0")
                   writerEstaq.WriteElementString("Z", "0")
                   writerEstaq.WriteElementString("A", "0")
                   writerEstaq.WriteElementString("W", "0")
                   writerEstaq.WriteElementString("S", "1")
                   'Encerra elemento da estaca em questão
                   writerEstaq.WriteEndElement()
                   'Incrementa contador
                   y += 1
               End While
    
               'Encerra elemento Estacas
               writerEstaq.WriteEndElement()
               'Escreve o XML para o arquivo e fecha o objeto escritor
               writerEstaq.Close()
    
               MsgBox("Arquivos gerados com sucesso.")
           Catch ex As Exception
               MsgBox(ex.Message, MsgBoxStyle.Information, "Erro!")
           End Try
    
           'Adiciona para o dgvEstacas os dados da estrutura criada
    
           dtGeometria = New DataTable("Estacas")
           dtGeometria.Columns.Add("ID")
           dtGeometria.Columns.Add("X")
           dtGeometria.Columns.Add("Y")
           dtGeometria.Columns.Add("Z")
           dtGeometria.Columns.Add("A")
           dtGeometria.Columns.Add("W")
           dtGeometria.Columns.Add("S")
    
           dtGeometria.ReadXml("C:\Arquivos de programas\SCE-BARONI\Estruturas\est" + frmNovo.txtNomeProjeto.Text + ".xml")
    
           dgvEstacas.DataSource = dtGeometria
           dgvEstacas.Refresh()

  7. Bom dia pessoal!

    Na minha classe de negócios estou utilizando o seguinte método para recuperar dados do meu banco (acho que vale a pena dizer que meu banco é MS-SQL Server 2000):

    public DataTable BuscaVendedor(string Vendedor)
            {
                SqlDataAdapter da = new SqlDataAdapter("select NumeroAto, LivroID, Folha, DataAto, Vendedor, CPFVendedor, Assinante, CPFAssinante, PlacaAuto, Observacao from tblAut where UPPER(Assinante) like @Assinante", conSisAr);
                da.SelectCommand.Parameters.Add("@Assinante", SqlDbType.Char, 50, "Assinante").Value = "%"+Vendedor.ToUpper()+"%";
                conSisAr.Open();
                try
                {
                    DataTable dt = new DataTable();
                    da.Fill(dt);
                    return dt;
                }
                finally
                {
                    conSisAr.Close();
                }
            }
    Já no meu formulário de buscas estou utilizando a seguinte codificação para recuperar dos dados:
    public override void Buscar()
            {
                clAcessoSisAr cl = new clAcessoSisAr();
                dt = cl.BuscaVendedor(txtItem.Text);
                base.Buscar();
            }

    O problema é que se eu digitar, por exemplo, o nome “DIORACI TORTORELO” no “txtItem “ e faço buscar, ele retorna o registro, porém se eu digito somente “DIORACI” ele não retorna nada, ou seja, ele só encontra no banco caso o texto digitado no “txtItem” for exatamente igual ao existente no banco...

    Como eu faço para que essa busca seja parcial, ou seja, se eu digitar “a” ele me retorne qualquer registro que tenha “a” no nome, nesse caso, se eu digitar “Dio” ele me retornaria todos os nomes que tenham “dio" em qualquer parte do nome?

    Valeu galera!

  8. Bom dia paulobergo,

    Acho muitíssimo importante saber a opinião de outros colegas sobre o assunto, mas me reservo do direito de discordar.

    Realmente até certo tempo atrás não era viável o armazenamento de imagens em banco de dados. Isso ocorria, pois os bancos de dados disponíveis não davam suporte direto a tal função e, quando davam, o faziam de forma precária.

    Levando em consideração o problema de backups, disponibilidade, portabilidade e tempo de acesso a tais objetos, vários bancos de dados passaram a dar suporte nativo a tal função.

    Hoje em dia quase todos os bancos de dados vêm preparados para isso. Podemos citar os que, em minha opinião, melhor fazem: Oracle, PostGreSQL, FireBird e InterBase. O PostGreSQL, projeto o qual acompanho de perto, tem um tempo de acesso, em média, 0,032 segundos mais rápido do que acesso direto, ou seja, o tempo de acesso a uma imagem armazenada dentro desse banco de dados é mais rápido do que se essa imagem estivesse guardada dentro de uma pasta. Isso ocorre graças a forma que o banco guarda as imagens em seu corpo.

    Levando em consideração que meus clientes, tal como a grande maioria dos clientes de nossa profissão, acaba esquecendo-se de fazer backup e justo no dia que se esquece de fazer backup o sistema dá problemas (Lei de Murphy), achei interessante, e menos trabalhoso que fazer um sistema que se comunique via FTP, instalar um sistema de replicação no banco de dados do cliente. Assim as informações, sejam elas imagens ou dados, tem uma cópia realizada automaticamente em um servidor remoto, sem que haja prejuízo de velocidade da internet ou do sistema.

    Pela internet você vai encontrar vários artigos sobre tal discussão que valem a pena serem lidos.

    Continuo aguardando um exemplo... :unsure:

  9. É fato que existem portais "prontos" em PHP, como o Joomla por exemplo.

    Eu pesquisei pela internet mas não achei nada do tipo em ASP...

    Gostaria de saber dos colegas mais experientes se existe algo do tipo.

  10. É fato que o código abaixo adiciona o site aberto como favorito:

    <script language=JavaScript1.2>
    <!--
    var bookmarkurl=document.location
    var bookmarktitle=document.title
    
    function addbookmark(){
    if (document.all)
    window.external.AddFavorite(bookmarkurl,bookmarktitle)
    }
    // -->
    </SCRIPT>
    
    <FORM>
    <INPUT name=BTN_Bookmark onclick=java script:addbookmark() type=button value="Adicionar aos favoritos"> 
    </FORM>

    Porém, se eu quiser colocat um outro site como favorito, por exemplo o UOL, como devo proceder?

    Ficaria assim, um botão escrito: "Adicione a UOL como favorito" e, ao clicar, ele adiciona http://www.uol.com.br como um favorito.

  11. Bom dia pessoal,

    Alguém sabe como extrair os "[" e "]" de uma variável, e tudo que estiver entre os colchetes? Por exemplo:

    Eu tenho a seguinte mensagem no meu banco:

    "Teste de [b:0d3bb13013]negrito[/b:0d3bb13013]"

    Gostaria de uma função que, ao processar essa entrada do banco me retornasse a seguinte mensagem:

    "Teste de negrito"

    Entenderam? Ela tem que sumir com os colchetes e tudo que estiver dentro dele... Alguém sabe como fazer por favor???

  12. Para poder entender os exemplo, antes tem que se entender que 'Flags' funcionam como seu nome sugere. São como bandeiras sinalizadoras de um evento ou um estado do software.

    Exemplos

    [1] - No caso de serem dois Forms da mesma aplicação pode se usar variáveis globais. Uma forma bem sucinta de fazer é criar uma nova Unit, nessa nova Unit criar uma variável que é alterada pelos forms em tempo de execussão.

    [2] - No caso de serem duas aplicações distintas pode-se usar dois métodos. 1º seria usar um campo em uma banco de dados para isso. Vantagens: esse método permite controle por rede. Desvantagens: Esse método pode se tornar lento em grandes aplicações. É bem trabalhoso. 2º Usar arquivos de texto para controle. Vantagens: Programação mais simples. Desvantagens: Um "engraçadinho" pode apagar acidentalmente esse arquivo. Pode ocorrer erros na gravação e alteração desses arquivos. Uma alternativa, complexa, mas com resultados satisfatórios é usar o registro do windows como flag.

    Porém fica um alerta: A aplicação deve ser bem testada e ter os erros tratados, pois se alguém fecha um programa de forma inesperada e a modificação da flag não acontecer a contento o programa pode apresentar erros estranhos (experiência própria).

×
×
  • Criar Novo...