
kuroi
Membros-
Total de itens
7.184 -
Registro em
-
Última visita
Tudo que kuroi postou
-
veja esse tutorial: http://scriptbrasil.com.br/forum/index.php?showtopic=108732
-
ajuda sim, mas isso ai parece q é visual basic .net e não visual basic 6.
-
imagino q seja essa linha aqui não?? rsProjeto.Open "dados",conexaoDatabase mas na verdade eu te passei duas solucoes, qual delas q você usou?? mas tente desse jeito: rsProjeto.Open "Select * From dados",conexaoDatabase
-
na verdade não é tão dificil. nivel 1 é so pra categoria sim. de 2 pra cima são as subs. quando ele vai grava ele já seleciona a categoria pai não?? pra gravar no campo id_categoriapai, certo?? ai antes de gravar, você faz um select pegando a (sub)categoria e ai você grava, no filho, o nivel dela + 1. veja se consegue ai, qualquer coisa poste.
-
tenta abrir a conexao assim ó: conexaoDatabase.Open "Provider = Microsoft.Jet.OLEDB.4.0; Data Source = " & cntCaminho se não funcionar, de uma olhada nesse link: http://support.microsoft.com/kb/315456/pt-br
-
estanho mesmo. tava olhando agora... o id da categoria é numerico ou tb é texto?? se for texto, faca assim ó: sql1 = "Select * From Categorias Where id_categoria = '" & rs1("id_categoriapai")&"'" e tb troque todos os rs1 por rs e ai veja se não funciona. porque tipo... fiz aqui um banco igualzinho ao seu... e copiei a sua funcao e aqui funcionou certinho assim q eu pus essas aspas e troquei tudo por rs. de uma olhada aqui: marvi.rar se você executar essa pagina com a querystring tipo assim: http://endereco/pagina/marvi.asp?categoria=67 você vai ver q ele vai mostrar certinho assim: Fraldas -> Linha infantil -> Sapeka -> Noturna EDITADO: quanto a fazer recursivamente tb é uma opcao, mas assim como funcionaria recursivamente tb tem q funcionar com o while, já q comecamos assim, acho melhor acabar com isso assim mesmo.
-
opa é verdade, nesse caso então use só o rs ou so rs1, não tem motivo pra usar dois rs. a não ser q você precise guardar o resultado do rs pra usar em outro lugar na pagina, ai nesse caso antes do while, então execute o mesmo select no rs1 tb. nesse caso pode haver problema na comparacao, apesar de q eu acho q não. mas seria bom você usar o while assim como eu disse antes: Do While CDbl(nivel) > 1
-
opa, você sabe criar funcoes?? ai você não poderia criar uma funcao q, você passando o mes e o ano ele retorne o numero de dias?? exemplo: int NumDias(int Mes, int Ano) { if ((Mes == 1) || (Mes == 3) || ... || (Mes == 12)) return 31; if ((Mes == 4) || (Mes == 6) || ... || (Mes == 11)) return 30; if (Mes == 2) { /* Aqui você calcula o numero de dias de feverero de acordo com o ano */ } }[/code] ai pra contar qual é o dia do ano, você entra num for de 1 ao mes digitado - 1 e soma o total de dias de cada mes anterior com o numero de dias digitados.
-
opa, valeu, vou mover pra sala de tutoriais.
-
veja, esses dois tutoriais ensinam a declarar a dll: http://scriptbrasil.com.br/forum/index.php?showtopic=78509 http://scriptbrasil.com.br/forum/index.php?showtopic=100232
-
opa mas aqui você ta pegando o filho ainda: sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'" Set rs1 = conexao.Execute(sql1)[/code] pra pegar o pai seria assim: [code]sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" Set rs1 = conexao.Execute(sql1) imagina assim, a querystring passou o id 64, q corresponde a categoria "Econômico" de acordo com o print q você passou. agora qual é o pai dele?? você pega pelo campo id_categoriapai q vale 61 não?? então o pai dele é o codigo 61, é a categoria Sapeka, certo?? como você faz pra selecionar a categoria q tem o codigo 61?? seria isso aqui não?? Select * From Categorias Where id_categoria = 61 afinal é o codigo 61. e de onde vem esse codigo 61?? quando você selecionou a categoria 64, é no campo id_categoriapai q esta gravado o codigo 61. então é dele q você vai pegar, assim: sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" mesmo fazendo assim continua travando?? se continuar, qual o tipo de dados do campo nivel no access?? tente fazer o while assim: Do While CDbl(nivel) > 1 opa, achei um erro aqui, ainda: sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" nessa linha tem q ser o rs1, pois é ele q é selecionado no loop, senao ele vai continuar pegando sempre a mesma coisa. tem q ser assim: sql1 = "Select * From Categorias Where id_categoria = '" & rs1("id_categoriapai")&"'" Set rs1 = conexao.Execute(sql1)[/code] se ainda assim continuar travando, faca um teste de debug. tipo comente a linha do while atual e troque por: [code]i = 0 Do While i < 10 ai antes do loop, de um Response.Write() no nome da categoria e some mais 1 na variavel i. assim vai aparecer na tela quais são as categorias q ele ta selecionando e ai a gente vai entender qual é o loop q ele ta fazendo.
-
opa, isso é verdade tb, as vezes a gente tenta o mais complicado pra fazer o mais simples. mas tente isso ai, qualquer coisa poste.
-
aqui você fez o contrario, olha: sql1 = "Select * From Categorias Where id_categoriapai = '" & rs("id_categoria")&"'" você tem q selecionar o pai pelo codigo do pai, o q você ta tentando selecionar em cima é o filho: sql1 = "Select * From Categorias Where id_categoria = '" & rs("id_categoriapai")&"'" e otra coisa, é q aqui você não ta montanod a string: categorias = rs1("Nome") você so ta preenchendo com o ultimo q ele achar (o pai de todos), veja como eu fiz la em cima. categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias opa, isso fui eu q passei la em cima, era so pra garantir q o categorias estivesse vazio, por conta da linha: categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias q concatena categorias com ela mesma, mas na verdade a linha não seria necessaria, por conta dessa outra linha q acabei inserindo aqui: categorias = rs("Nome") mas acabei esquecendo de apagar do codigo. pode tirar se quiser, marvi
-
foi isso tb q eu fiz, e foi assim q eu expliquei, com a unica diferenca q as categorias e as subcategorias tão na mesma tabela. eu acho q o melhor seria usar uma tabela só. ai você sabe q as categorias são as q tem nivel 1. as de outro nivel são subcategorias. mas você não precisa mudar o seu sistema, pode usar duas tabelas, mas ai adaptaria o codigo. quando chegasse no nivel 2 você pegava o proximo na tabela de categorias. então... é aquele codigo q eu passei la em cima. tipo, se ele clica em fralda pequena, imagino q você tenha um campo q guarde o codigo da (sub)categoria pai, não?? então você seleciona a (sub)categoria pai e poe ela na frente da string. e vai fazendo isso num for ate chegar no nivel 1. exatamente como faz o codigo q passei acima.
-
hum... datareport eu não uso então não sei direito. quem sabia isso era o macedo mas ele ta sumido. mas de uma olhada nesse otro tutorial do macoratti: http://www.macoratti.net/vb_drpt.htm ele ensina a fazer o relatorio. veja no codigo, a hora q você tem q passa o rs (recordset) não seria so você passar o datasource (adodc) q estiver linkado ao grid?? de tb uma olhada nesse tutorial aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=109308 e veja q no site do macoratti tb tem outros tutoriais de datareport.
-
hehe marvi ta pensando em ter filho é?? mas tipo quando eu fiz isso certa vez, eu tinha uma tabela de categorias. na tabela um dos campos era da categoria pai e o outro gravava o nivel dela. assim a tabela se relacionava recursivametne com ela mesma. exemplo, você cria as primeiras categorias, de nivel 1, tipo eletronicos, brinquedos, livros, bebes, etc. ai você quer criar as categorias filho. exemplo, chupeta, abaixo de bebe. supondo q bebe seja de nivel 1 com codigo 5, você grava a chupeta com nivel 2 (logo abaixo de bebe) e com o codigo do pai como 5 (pois chupeta é filho de bebe). ai caso você quisesse ainda dividir chupeta em categorias. seila, chupeta rosa e chupeta azul, você criaria as duas categorias com o nivel 3, e filho de chupeta. exemplo, se o codigo de chupeta é 25, você grava 25 no codigo pai dos dois. ficar tipo assim ó: Codigo | Nome | Nivel | Pai ----------------------------------------------- 1 | Eletronicos | 1 | 0 3 | Livros | 1 | 0 5 | Bebês | 1 | 0 10 | Televisão |2 |1 'Código do pai = 1 (eletrônicos), portanto, esta abaixo de eletronicos 15 | Romance |2 |3 'Código do pai = 3 (livros), portanto, esta abaixo de livros 25 | Chupeta |2 |5 'Código do pai = 5 (bebes), portanto, esta abaixo de bebes 33 | Chp. azul |3 |25 'Código do pai = 25 (chupeta), portanto, esta abaixo de chupeta 34 | Chp. rosa |3 |25 'Código do pai = 25 (chupeta), portanto, esta abaixo de chupeta[/code] ai se você quiser mostrar assim: [code]Bebês -> Chupeta -> Chupeta Azul o q acontece é q, quando ele for abrir a pagina, você passa na querystring o codigo da chupeta azul. ai você vai fazendo o select ate chegar no nivel 1. mais ou menos assim: categorias = "" sql = "Select * From Categorias Where Codigo = " & Request.Querystring("codigo") Set rs = cn.Execute(sql) nivel = rs("Nivel") categorias = rs("Nome") q = Chr(34) Do While nivel > 1 sql = "Select * From Categorias Where Codigo = " & rs("Codigo_Pai") Set rs = cn.Execute(sql) nivel = rs("Nivel") categorias = "<a href=" & q & "http://www.pagina.com/produtos.asp?categorias=" & rs("Codigo") & q & ">" rs("Nome") & "</a> -> " & categorias Loop[/code] assim, o caminho todo fica na variavel categorias. entenda q você não precisa gravar o caminho q ele clicou de link em link. pode olhar no site do submarino mesmo, ele faz sempre esse caminho q eu passei, uma categoria só e filha de outra categoria. quando você abrir a vitrine da categora você so tem q fazer o caminho dela pra chegar ao pai. agora, isso muda para os produtos. porque um produto pode ter mais de uma categoria. mas você não precisa gravar o caminho todo. na vitrine q ele tiver, você passa como querystring no link do produto, o codigo da categoria atual. ai você sabe de onde ele veio. assim você pode montar o mesmo caminho da vitrine. já q ele pode vir de mais de uma vitrine diferente, com querystring no link dos detalhes você pode saber de qual vitrine ele veio, etnende?? no fundo é bem simples. veja se entendeu e se resolveu ai, qualquer coisa poste.
-
não entendo esse jeito de programar em portugues, mas acho q você ta pedindo pro cara digitar a media, não?? você não teira q fazer o calculo baseado nas notas?? na tem sentido pedir pra ele digitar as notas e depois a media. outra coisa, é q você manda ele ler a variavel aprovado: leia:APROVADO você não deveria, em vez de pedir pra ler, somar mais 1 quando o aluno tiver aprovado. e o mesmo pra reprovado, etc. e tb não entendi essas partes no final: enquanto RECUPERACAO > 0 faça {número de alunos em recuperação} CONTA = 0 CONTA <- CONTA + 1 SOMA <- SOMA + RECUPERACAO escreva ALUNOS_REC leia ALUNOS_REC fim-enquanto[/code] q conta estranha é essa q você faz?? e porque você pede pra escrever ALUNOS_REC sendo q você nunca usou essa variavel antes (ou seja, ela ta vazia) e ainda depois você pede pra ler e não usa mais??
-
hsuasuahus boa George, mas da Equipe toda... q já não era muito boa
-
jefferson qual a versao do sql você esta usando?? realmente, você não vai conseguir criar a procedure dentro do try/catch assim. mas uma opcao seria você gravar o script de criacao da procedure num arquivo .sql separado. e ai na hora q precisar criar a procedure, você executa esse arquivo. cara, não achei uma funcao pra executar o codigo do arquivo por script. tipo, acho q deve ter um modo mas não achei. mas sei q tem como você ler qualquer arquivo de texto. e ai você leria um arquivo com o codigo e executava. aqui nesse link ele ensina como faz isso: http://www.simple-talk.com/sql/t-sql-progr...er-using-t-sql/ não sei q versao do sql você usa, mas já usei isso no sql 2005 e funcionou certinho, mas em outras versoes não sei se funciona, mas você pode tentar ai. mas basicamente, você tem só q criar essa funcao no seu database: Create Function [dbo].[ufsReadfileAsString] ( @Path VARCHAR(255), @Filename VARCHAR(100) ) RETURNS Varchar(max) AS BEGIN DECLARE @objFileSystem int ,@objTextStream int, @objErrorObject int, @strErrorMessage Varchar(1000), @Command varchar(1000), @Chunk Varchar(8000), @String varchar(max), @hr int, @YesOrNo int Select @String='' select @strErrorMessage='opening the File System Object' EXECUTE @hr = sp_OACreate 'Scripting.FileSystemObject' , @objFileSystem OUT if @HR=0 Select @objErrorObject=@objFileSystem, @strErrorMessage='Opening file "'+@path+'\'+@filename+'"',@command=@path+'\'+@filename if @HR=0 execute @hr = sp_OAMethod @objFileSystem , 'OpenTextFile' , @objTextStream OUT, @command,1,false,0--for reading, FormatASCII WHILE @hr=0 BEGIN if @HR=0 Select @objErrorObject=@objTextStream, @strErrorMessage='finding out if there is more to read in "'+@filename+'"' if @HR=0 execute @hr = sp_OAGetProperty @objTextStream, 'AtEndOfStream', @YesOrNo OUTPUT IF @YesOrNo<>0 break if @HR=0 Select @objErrorObject=@objTextStream, @strErrorMessage='reading from the output file "'+@filename+'"' if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Read', @chunk OUTPUT,4000 SELECT @String=@string+@chunk end if @HR=0 Select @objErrorObject=@objTextStream, @strErrorMessage='closing the output file "'+@filename+'"' if @HR=0 execute @hr = sp_OAMethod @objTextStream, 'Close' if @hr<>0 begin Declare @Source varchar(255), @Description Varchar(255), @Helpfile Varchar(255), @HelpID int EXECUTE sp_OAGetErrorInfo @objErrorObject, @source output,@Description output,@Helpfile output,@HelpID output Select @strErrorMessage='Error whilst ' +coalesce(@strErrorMessage,'doing something') +', '+coalesce(@Description,'') select @String=@strErrorMessage end EXECUTE sp_OADestroy @objTextStream -- Fill the table variable with the rows for your result set RETURN @string END [/codebox] e ai você tem q dar permissao pra poder ler arquivos, é só rodar esse script: [code]sp_configure 'show advanced options', 1; GO RECONFIGURE; GO sp_configure 'Ole Automation Procedures', 1; GO RECONFIGURE; GO[/code] mas isso acho q so no 2005. veja mais informacoes sobre isso aqui: http://msdn.microsoft.com/en-us/library/ms191188.aspx ai então, imagine q você salve o conteudo dessa procedure num arquivo chamado proc.sql: [code]-- ============================================= -- Author.....: -- Create date: 99/99/99 -- Description: -- ============================================= CREATE PROCEDURE [dbo].[SP_NOME_PROCEDURE] ( @PARAMETRO INT ) AS BEGIN DECLARE @VARIAVEL INT -- SET NOCOUNT ON added to prevent extra result sets from -- interfering with SELECT statements. SET NOCOUNT ON; -- Executa as operações END[/code] ai você faria isso q você quer simplesmente assim: [code]BEGIN TRY -- INICIA A TRANSAÇÃO E DEFINE O TRATAMENTO DE ERROS E A CONTINUIDADE NO SCRIPT... SET XACT_ABORT OFF; BEGIN TRAN SET @TRATA_ERRO = 1 SET @CONTINUA_EXEC = 1 -- INÍCIO DE EXECUÇÃO DAS OPERAÇÕES... SET ANSI_NULLS ON SET QUOTED_IDENTIFIER ON SET ANSI_PADDING ON -- AQUI PARA CRIAR A PROCEDURE: DECLARE @var VARCHAR(8000) SELECT @var = dbo.ufsReadfileAsString ('C:\caminho\','proc.sql') EXEC (@var) SET ANSI_NULLS OFF SET QUOTED_IDENTIFIER OFF SET ANSI_PADDING OFF -- FINALIZA A TRANSAÇÃO ATUAL... COMMIT TRAN PRINT 'MESSAGE=A transação atual foi concluída com sucesso !' END TRY[/code] veja ai se funciona, qualquer coisa poste.
-
duas coisas, primeiro, você tem q declarar a funcao como ponteiro, assim: char *inverte(char *nome); e retornar o endereco da variavel e não o valor (já q, como a propria funcao é um pontero, você tem q retornar o local onde ela aponta), assim: return inv; e depois, você não consegue dar printf numa funcao ponteiro, já q ele libera o endereco depois q a funcao é executada. você teria q alocar o espaco pra fazer com o print direto. mas ai o esquema é copiar o endereco pra um outro ponteiro. tipo assim: char *retorno; strcpy(retorno, inverte(texto)); printf("%s", retorno);[/code] e uma ultima coisa, é bom você finalizar a string de retorno depois de inverter. tipo, depois do for, adicione a linha: [code]inv[j] = '\ 0'; (so q tire o espaco entre o \ e o 0) porque senao ele não sabe onde termina a string.
-
se não me engano, em c % traz o resto da divisao. ai se o resto da divisao por 4 for 0 (if (ano % 4) == 0) é porque é divisivel por 4, entendeu??
-
opa, por acaso você não esta usando SQL Server??
-
jefferson, você pode postar quais são exatamente as mensagens de erro q ele mostra nesses dois casos??
-
ai pra isso as queries do subselect devem ter alguma relacao com essa tabela q tem essa data, não?? ai você adiciona um join para q a data tb apareca no select e então adiciona esse filtro.