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

Inserir multiplos registros


Wilder

Pergunta

Pessoal,

Estou com duvida para inserir multiplos registros de uma vez no banco de dados. Quando um campo for DATA como faço para o loop ir aumentando o mes e se virar o ano ele virar o ano também?

exemplo: quero cadastrar 24 parcelas de x reais apartir do mes 3 eu consigo inserir ate o mes 12 normalmente, se virar o ano da erro. Segue o codigo:

if (request.form("valor")<>"" ) then

n_vezes = request.form("n_vezes")

for i=0 to n_vezes -1

data = request.form("data_saida")

sql="insert into saidas (valor,data_saida,forma_pagamento,nome_conta,tipo_despesa,nome_sub_centro_cust,n

ome_centro_cust,nome_centro_resp,n_documento,destino,detalhes,quitada) values ('"& request.form("valor")&"','"& DatePart("m", data)+(i) & "/" & DatePart("d", data) & "/" & DatePart("yyyy", data) &"','"& request.form("forma_pagamento")&"','"& request.form("nome_conta")&"','"& request.form("tipo_despesa")&"','"& request.form("nome_sub_centro_cust")&"','"& request.form("nome_centro_cust")&"','"& request.form("nome_centro_resp")&"','"& (i+1) &"/" & n_vezes &"','"& request.form("destino")&"','"& request.form("detalhes")&"','"& request.form("quitada") &"')"

conexao.execute(sql)

next

conexao.Close

MM_editRedirectUrl = "confirmacao_saidas.asp"

Response.Redirect(MM_editRedirectUrl)

End if

Obrigadoo

Link para o comentário
Compartilhar em outros sites

12 respostass a esta questão

Posts Recomendados

  • 0
Qual erro que dá?

Segue o erro:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e07'

[Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.

Sempre que o mes é superior a 12 ele da esse erro.

e não sei como faço também para que o ano, nesse caso, mude junto com o mes.

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

assim:

if (mes>12) then
mes=mes-12
ano=ano+1
end if

sql="insert into saidas (valor,data_saida,forma_pagamento,nome_conta,tipo_despesa,nome_sub_centro_cust,nome_centro_cust,nome_centro_resp,n_documento,destino,detalhes,quitada) values ('"& request.form("valor")&"','"& DatePart("m", data)+(i) & "/" & DatePart("d", data) & "/" & DatePart("yyyy", data) &"','"& request.form("forma_pagamento")&"','"& request.form("nome_conta")&"','"& request.form("tipo_despesa")&"','"& request.form("nome_sub_centro_cust")&"','"& request.form("nome_centro_cust")&"','"& request.form("nome_centro_resp")&"','"& (i+1) &"/" & n_vezes &"','"& request.form("destino")&"','"& request.form("detalhes")&"','"& request.form("quitada") &"')"
conexao.execute(sql)
next

Link para o comentário
Compartilhar em outros sites

  • 0

Rafael, eu usei do jeito que você falou e também assim:

if  (request.form("valor")<>"" ) then
n_vezes = request.form("n_vezes")

for i=0 to n_vezes -1
data = request.form("data_saida")


if (DatePart("m", data)>12) then
DatePart("m", data)=DatePart("m", data)-12
DatePart("yyyy", data)=DatePart("yyyy", data)+1
end if

sql="insert into saidas (valor,data_saida,forma_pagamento,nome_conta,tipo_despesa,nome_sub_centro_cust,nome_centro_cust,nome_centro_resp,n_documento,destino,detalhes,quitada) values ('"& request.form("valor")&"','"& DatePart("m", data)+(i) & "/" & DatePart("d", data) & "/" & DatePart("yyyy", data) &"','"& request.form("forma_pagamento")&"','"& request.form("nome_conta")&"','"& request.form("tipo_despesa")&"','"& request.form("nome_sub_centro_cust")&"','"& request.form("nome_centro_cust")&"','"& request.form("nome_centro_resp")&"','"& (i+1) &"/" & n_vezes &"','"& request.form("destino")&"','"& request.form("detalhes")&"','"& request.form("quitada") &"')"

conexao.execute(sql)
next

conexao.Close

MM_editRedirectUrl = "confirmacao_saidas.asp"
Response.Redirect(MM_editRedirectUrl)

End if

E não deu dos dois jeitos, continua entrando no banco apenas ate o mes 12 do mesmo ano e da esse erro:

Microsoft OLE DB Provider for ODBC Drivers erro '80040e07'

[Microsoft][Driver ODBC para Microsoft Access] Tipo de dados imcompatível na expressão de critério.

/GESFINBac/inserir_saidas_parc.asp, line 38

a linha 38 é: conexao.execute(sql)

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

Cara ta muito estranho...

Em soma de datas não deveria acontecer isso.... o asp altera o ano automaticamente...

O que eu acho é que as datas podem estar invertidas... e o erro que aparentemente é no ano acaba sendo no mês... o mês deve estar invertido com os dias... e quando passa de 31 ocorre o erro...

Eu tentaria tirar isso de dentro da instrução de insert... fazer o somatório fora e depois passar só os resultados pra dentro do insert...

Portanto, o primeiro teste que eu faria seria debugar essa parte das parcelas... algo assim:

for i=0 to n_vezes -1
data = request.form("data_saida")


novadata = DatePart("m", data)+(i) & "/" & DatePart("d", data) & "/" & DatePart("yyyy", data)

response.write novadata
next

roda isso e ve o que acontece... depois posta os resultados aqui...

Link para o comentário
Compartilhar em outros sites

  • 0

você ta certo Rafael veja:

coloquei a data: 15/10/2009 e mandei rodar em 15 vezes

olha o resultado:

10/15/2009

11/15/2009

12/15/2009

13/15/2009

14/15/2009

15/15/2009

16/15/2009

17/15/2009

18/15/2009

19/15/2009

20/15/2009

21/15/2009

22/15/2009

23/15/2009

24/15/2009

como aceto isso dentro daquele codigo?

valeu

Link para o comentário
Compartilhar em outros sites

  • 0

O que eu fiz abaixo resolveu em partes.

exemplo: setei a data 15/10/2009 em 18 vezes:

ele da esse resultado:

15

10

2009

15

11

2009

15

12

2009

15

1

2010

15

2

2010

15

3

2010

15

4

2010

15

5

2010

15

6

2010

15

7

2010

15

8

2010

15

9

2010

15

10

2010

15

11

2010

15

12

2010

15

13

2010

15

14

2010

15

15

2010

Segue o codigo:

if  (request.form("valor")<>"" ) then
n_vezes = request.form("n_vezes")

for i=0 to n_vezes -1
data = request.form("data_saida")
data = DatePart("m", data) & "/" & DatePart("d", data) & "/" & DatePart("yyyy", data)
data = cdate(data)

mes = DatePart("m", data)+(i)
ano = DatePart("yyyy", data)

if (mes>12) then
mes=mes-12
ano=ano+1
end if

sql="insert into saidas (valor,data_saida,forma_pagamento,nome_conta,tipo_despesa,nome_sub_centro_cust,nome_centro_cust,nome_centro_resp,n_documento,destino,detalhes,quitada) values ('"& request.form("valor")&"','"& mes & "/" & DatePart("d", data) & "/" & ano &"','"& request.form("forma_pagamento")&"','"& request.form("nome_conta")&"','"& request.form("tipo_despesa")&"','"& request.form("nome_sub_centro_cust")&"','"& request.form("nome_centro_cust")&"','"& request.form("nome_centro_resp")&"','"& (i+1) &"/" & n_vezes &"','"& request.form("destino")&"','"& request.form("detalhes")&"','"& request.form("quitada") &"')"
conexao.execute(sql)
next

conexao.Close

MM_editRedirectUrl = "confirmacao_saidas.asp"
Response.Redirect(MM_editRedirectUrl)



End if

Link para o comentário
Compartilhar em outros sites

  • 0
Mude essa lógica... use dateadd para somar os meses... ficará mais fácil

Coloque o número de parcelas no i e va somando de acordo com o loop... ficará mais bonito, simples e eficiente!

Eu so iniciante,, não sei fazer isso que você disse..rsrsr

pode me ajudar por favor?

Obrigado

Link para o comentário
Compartilhar em outros sites

  • 0

é basicamente a mesma coisa... só que ao invés de somar mais 1 até percorrer todo loop use dateadd com mais i...

de uma pesquisadinha nesse link abaixo, faça algumas tentativas e depois poste os seus resultados...

http://imasters.uol.com.br/artigo/932/asp/...oras_-_parte_2/

[]'s

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
      152k
    • Posts
      651,8k
×
×
  • Criar Novo...