Ir para conteúdo
Fórum Script Brasil
  • 0

Gravar/Alterar pagina


PRWEBMaster

Pergunta

Tudo bem galera?

Seguinte, tenho 2 tabelas no meu banco de dados, aonde a tabela_1 tem os campos: no_os, id_cliente e alguns campos a mais, e na tabela_2 tem no_os, id_cliente, e mais uns 50 campos.

Quando eu clico para gerar um ordem de serviço ele gera um numero de no_os nas 2 tabelas, sendo que a tabela_2 eu posso adicionar vários registros no_os com o mesmo número.

Só que essas 2 tabelas já está passando de 1.000 registros e ta dificultando a gravação demorando quase 1 minuto para gravar.

Uso ibexpert e firebird, linguagem ASP.

Seria possível me darem uma idéia de como posso melhorar o desempenho.

Muito obrigado

Editado por quintelab
Título alterado conforme regras do fórum
Link para o comentário
Compartilhar em outros sites

7 respostass a esta questão

Posts Recomendados

  • 0

Cara... só assim, não entendo por que a inserção está demorada porque inserir deveria ser rápido, normalmente a consulta é que deveria demorar... Não tem nada errado na sua rotina de inserção?

Outra coisa: 1000 registros não me dizem muita coisa... ex: Cada registro tem quantos campos?

Qual o tamanho do BD?

Quanto a ideias para melhorar o desempenho me vem algumas em mente, mas com as respostas as dúvidas acima podería ser mais preciso, todo caso, genéricamente sugiro:

1) Verificar rotinas de inserção;

2) Verificar real necessidade de dados antigos no bd, sendo que remanejar alguns para tabelas secundárias pode ser um bom caminho, além de efetuar expurgos dos dados desnecessários;

3) Melhorar a capacidade de processamento da própria máquina (processador, memória ram, hd's mais rápidos e etc.)

4) Por último talvés até a troca do BD por outro mais rápido... derepente oracle ou sql server... daí já não sei se to falando besteira porque não tenho conhecimentos práticos sobre qual é mais ou menos rápido e se são ou não de fato mais rápidos...

[]'s

Link para o comentário
Compartilhar em outros sites

  • 0

Tudo bem?

Gostaria de ver a possibilidade de verificar se meu codigo está certo, porque é quando vou gravar os dados que demora:

<%@LANGUAGE="VBSCRIPT" CODEPAGE="1252"%>

<%
Response.CacheControl = "no-cache"
Response.AddHeader "Pragma","no-cache"
Response.Buffer = FALSE
Session.TimeOut = 1440
Server.ScriptTimeOut = 999.999

if session ("v_o_f_alterar") = 0 then
Response.redirect "erro.asp"
end if

Session.LCID = 1033

id_cliente = request.QueryString("id_cliente")
nome_empresa = request.QueryString("nome_empresa")
num_os = request.QueryString("no_os")

'Função para remover caracteres especiais dos números
Function RemoveReal(valor)
 if (valor <> "") then
  RemoveReal = Replace(valor, ".", ",")  'Troca vírgula por ponto
 end if
End Function

id_ch = request.QueryString("id_ch")
id_cliente = request.QueryString("id_cliente")
num_os = request.QueryString("no_os")
id = request.QueryString("id")
nome_empresa = request.QueryString("nome_empresa")
descricao = request.QueryString("descricao")
sistema = request.QueryString("sistema")
gerar_of_om = request.QueryString("gerar_of_om")
descricao = Request.Form("descricao")
departamento = Request.Form("departamento")
situacao_of_om = Request.Form("situacao_of_om")
equipamento = Request.Form("equipamento")
gerar_cob = Request.Form("gerar_cob")
solicitado_por = Request.Form("solicitado_por")
urgente = Request.Form("opt")
separado = Request.Form("opt10")
fechado_por = Request.Form("fechado_por")
v_unitario = RemoveReal(Request.Form("v_unitario"))
v_total = RemoveReal(Request.Form("v_total"))
valor_total = RemoveReal(Request.Form("valor_total"))
sub_total = RemoveReal(Request.form("sub_total"))
custo_envio = RemoveReal(Request.form("custo_envio"))
outros = RemoveReal(Request.form("outros"))
total_geral = RemoveReal(Request.form("total_geral"))
transporte = Request.form("transporte")
outras = Request.form("outras")
observacoes = Replace(Request.form("observacoes"),"'","''")
tipo_coleta = Request.form("opt2")
quant_entregue = Request.form("quant_entregue")
data_entregue = Request.form("data_entregue")
quant_entregue = Request.form("quant_entregue")
prod_pendente = Request.QueryString("prod_pendente")
prod_pago = Request.QueryString("prod_pago")
desconto = Request.form("desconto")
data_saida = Request.Form("data_saida")

'Conexao tabela INTERBASE
Set oConn = Server.CreateObject("ADODB.Connection")
oConn.Open("DRIVER={Firebird/Interbase® driver}; DBNAME=localhost:c:\Inetpub\wwwroot\sistema_interno_hcs_v.1.0\bd\BD_HCS.GDB; UID=SYSDBA;PWD=masterkey")

'Verificando quantidade de registros
Set os = server.createobject("adodb.recordset")
Set os = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_GERAR_OF_OM_CAD_ITENS")
num_rows = os("temp")
os.Close()

for i = 1 to num_rows

id = Request.form("id_"&i)
quant = Request.form("quant_"&i)
quant_entregue = Request.form("quant_entregue_"&i)
data_entregue = Request.form("data_entregue_"&i)
quant_pendente = Request.form("quant_pendente_"&i)
equipamento = Request.form("equipamento_"&i)
obs_prod = Request.form("obs_prod_"&i)
v_unitario = RemoveReal(Request.form("v_unitario_"&i))
v_total = RemoveReal(Request.form("v_total_"&i))
valor_total = RemoveReal(Request.form("valor_total_"&i))
prod_pendente = Request.form("opt1_"&i)
prod_pago = Request.form("prod_pago_"&i)

usuario_altera = session("usuario_altera")
ip_altera = Request.ServerVariables("REMOTE_ADDR")

set os = oConn.execute ("select * from TB_GERAR_OF_OM_CAD_ITENS where id = '"&id&"'")

if not os.eof then

 if prod_pendente = "" then
      prod_pendente = "0"
 else
     prod_pendente = "1"
 end if


  'SELECIONE CODIGO DO PRODUTO (NO_OS DA TB_GERENCIAR_PRODUCAO E GRAVA NO_OS NO CAMPO ID_PRODUTO DA TABELA TB_GERAR_OF_OM_CAD_ITENS)
 ' set estoque = oConn.execute ("select * from TB_GERENCIAR_PRODUCAO where equipamento = '"&equipamento&"'")

 ' if not (estoque.eof) then
   'Obtem campo com a quantidade atual do estoque
  ' quant_atual_estoque = estoque("quant_estoque")
   'Faz a subtração do valor gravado pelo valor obtido do estoque
  ' nova_quant_estoque = quant_atual_estoque - quant

   'Faz UPDATE na tabela do estoque com a nova quantidade
  ' oConn.execute("update TB_GERENCIAR_PRODUCAO set quant_estoque = '"&nova_quant_estoque&"' where EQUIPAMENTO = '"&equipamento&"'")
 ' end if

 'Atualiza informaçoes no INTERBASE 'TB_GERAR_OF_CAD_ITENS'
 oConn.execute ("update TB_GERAR_OF_OM_CAD_ITENS Set descricao = '"&descricao&"', situacao_of_om = '"&situacao_of_om&"', solicitado_por = '"&solicitado_por&"', departamento = '"&departamento&"', urgente = '"&urgente&"',equipamento = '"&equipamento&"', quant = '"&quant&"', obs_prod = '"&obs_prod&"', v_unitario = '"&v_unitario&"', v_total = '"&v_total&"', sub_total = '"&sub_total&"', custo_envio = '"&custo_envio&"', outros = '"&outros&"', total_geral = '"&total_geral&"', transporte = '"&transporte&"', outras = '"&outras&"', observacoes = '"&observacoes&"', tipo_coleta = '"&tipo_coleta&"', quant_entregue = '"&quant_entregue&"', data_entregue = '"&data_entregue&"', quant_pendente = '"&quant_pendente&"', prod_pendente = '"&prod_pendente&"', prod_pago = '"&prod_pago&"', separado = '"&separado&"', desconto = '"&desconto&"', data_saida = '"&data_saida&"' WHERE id = " & cdbl(id))

 'Atualiza informaçoes no INTERBASE 'TB_GERAR_OF_CAD'
 oConn.execute ("update TB_GERAR_OF_OM_CAD Set solicitado_por = '"&solicitado_por&"', descricao = '"&descricao&"', situacao_of_om = '"&situacao_of_om&"', departamento = '"&departamento&"', urgente = '"&urgente&"', total_geral = '"&total_geral&"', tipo_coleta = '"&tipo_coleta&"', separado = '"&separado&"', data_saida = '"&data_saida&"' WHERE no_os = "&Request.QueryString("no_os"))

else
 end if
next
set os = nothing

ato = request.Form("opt3")
dd10 = request.Form("opt12")
dd15 = request.Form("opt4")
dd30 = request.Form("opt5")
dd45 = request.Form("opt6")
dd60 = request.Form("opt7")
dd90 = request.Form("opt8")
dd120 = request.Form("opt9")
dd135 = request.Form("opt13")
dd150 = request.Form("opt11")
forma_pagto = request.Form("forma_pagto")
data_venc_pagto = Request.Form("data_venc_pagto")
valor_pagto = Request.Form("valor_pagto")
anotacao1 = Request.Form("anotacao1")

Function conv_data(data_venc_pagto)  
 dia = day(data_venc_pagto)
 if len(dia) < 2 then
  dia = "0" & dia
 end if
 mes = month(data_venc_pagto)
 if len(mes) < 2 then
  mes = "0" & mes
 end if
 ano = year(data_venc_pagto)
 conv_data = dia & "." & mes & "." & ano
End Function
data_venc_pagto = conv_data(data_venc_pagto)

'Verificando quantidade de registros
Set campos = server.createobject("adodb.recordset")
Set campos = oConn.execute ("SELECT COUNT(*) AS temp FROM TB_INFO_PAGTO")
num_rows = campos("temp")
campos.Close()

for i = 1 to num_rows

id_ch = Request.form("id_ch_"&i)
data_venc_pagto = Request.form("data_venc_pagto_"&i)
forma_pagto = Request.form("forma_pagto_"&i)
anotacao1 = Request.form("anotacao1_"&i)
valor_pagto = Request.form("valor_pagto_"&i)

 'Atualiza informaçoes no INTERBASE 'TB_CAD_CHEQUES_OF'
 oConn.execute ("update TB_INFO_PAGTO Set ato = '"&ato&"', dd10 = '"&dd10&"', dd15 = '"&dd15&"', dd30 = '"&dd30&"', dd45 = '"&dd45&"',  dd60 = '"&dd60&"', dd90 = '"&dd90&"', dd120 = '"&dd120&"', dd135 = '"&dd135&"', dd150 = '"&dd150&"', forma_pagto = '"&forma_pagto&"', data_venc_pagto = '"&conv_data(data_venc_pagto)&"', valor_pagto = '"&valor_pagto&"', valor_pago = '0', anotacao1 = '"&anotacao1&"' WHERE id_ch = " & cdbl(id_ch))
next

set campos = nothing

set user = server.createobject("adodb.recordset")
set user = oConn.execute ("SELECT * FROM USER_SISTEMA_HCS order by id DESC")

data_acesso = Date()
'hora_acesso = Time()

if not(user.eof) then
 novo = user("id") + 1
else
 novo = 1
end if

Function conv_data(data_acesso)  
 dia = day(data_acesso)
 if len(dia) < 2 then
  dia = "0" & dia
 end if
 mes = month(data_acesso)
 if len(mes) < 2 then
  mes = "0" & mes
 end if
 ano = year(data_acesso)
 conv_data = dia & "." & mes & "." & ano
End Function
data_acesso = conv_data(data_acesso)

usuario = session("usuario")
ip = Request.ServerVariables("REMOTE_ADDR")

oConn.execute ("insert into USER_SISTEMA_HCS (id, usuario, ip, data_acesso, tela_acessada, id_cliente, no_os) Values('"&novo&"','"&usuario&"','"&ip&"','"&data_acesso&"','ALTERA O.F','"&id_cliente&"','"&num_os&"')")

set user = nothing
oConn.Close()

Response.redirect "gerar_os.asp?id_cliente="&id_cliente&"&no_os="&num_os&"&status_os=em_andamento&msg=INSERIDO COM SUCESSO!"
%>

Muito Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

bom se um insert seu usa tudo isso alterando varias tabelas e usando vários laços... realmente pode demorar um pouco...

sua lógica ta complicada de entender... qual seria o passo a passo dessa inserção?

tipo ... o q é feito em cada tabela ... da uma comentada ai pls,...

se possivel um link da coisa.

Link para o comentário
Compartilhar em outros sites

  • 0

você mandar o localhost de seu iis não funciona para ninguém alem de você acessar.

o correto seria ip/xxx...., isso se tiver um ip fixo em um computador com as devidas configurações de redirecionamento de portas, e que esteja ligado.

com ip não fixo o uso do no-ip ajuda...

Link para o comentário
Compartilhar em outros sites

Participe da discussão

Você pode postar agora e se registrar depois. Se você já tem uma conta, acesse agora para postar com sua conta.

Visitante
Responder esta pergunta...

×   Você colou conteúdo com formatação.   Remover formatação

  Apenas 75 emoticons são permitidos.

×   Seu link foi incorporado automaticamente.   Exibir como um link em vez disso

×   Seu conteúdo anterior foi restaurado.   Limpar Editor

×   Você não pode colar imagens diretamente. Carregar ou inserir imagens do URL.



  • Estatísticas dos Fóruns

    • Tópicos
      152,1k
    • Posts
      651,8k
×
×
  • Criar Novo...