Ir para conteúdo
Fórum Script Brasil

kuroi

Membros
  • Total de itens

    7.184
  • Registro em

  • Última visita

Posts postados por kuroi

  1. valor < 100000
    Isso?? Note q se você escrever assim deve causar erro:
    valor < 100.000,00
    E se você escrever assim ele vai entender como 100:
    valor < 100.000
    Se precisar usar casas decimais, faca assim:
    valor < 100000.00

    Tudo isso levando em conta q o campo valor está como numérico no banco de dados.

    Se não estiver, é bom mudar pra numérico, ou vai ter q ficar convertendo no Select.

  2. Hum, parece que ele está querendo usar o xmlhttp em duas funções separadas como se fosse o mesmo, mas acho que na verdade são dois xmlhttp diferentes. Esse objeto está declarado antes do código das funções?? Se não estiver, adicione isso antes de abrir as funções:

    var xmlhttp;

    Ou adicione ele como parâmetro para a segunda função.

  3. Hum... ainda assim, não vejo nada que impeça fazer por arquivo. Você pode gravar o arquivo, enviar o conteúdo e depois apagar. Se o usuário tem permissão pra acessar a rede, imagino que também tenha para escrever no HD.

    De qualquer modo, parece que existe uma função chamada ReadConsole(), veja o exemplo lá embaixo nesse link, parece que faz o que você quer: http://visualbasic.about.com/od/learnvb6/l/bldykvb6dosa.htm

    Fora isso, tem coisas que o próprio Visual Basic pode fazer. Por exemplo, no caso do dir, o Visual Basic já tem uma função chamada Dir() pra percorrer os diretórios, não precisa usar comando de DOS nesse caso.

  4. se coloco "DIR > "C:\Dados.txt"" é gravado no arquivo todos as pastas e arquivos do disco C: , porém as letras ficam confusas...

    Isso é problema de codificação, o cmd deve usar uma codificação diferente do windows.

    Agora tenho que sair, depois dou uma pesquisada se tem algo que dê pra fazer quanto a isso.

    gostaria de fazer este retorno sem precisar salvar o arquivo no disco.

    Por quê??

  5. se executo "DIR" no Prompt é listado todos arquivos e pastas do diretório informado...

    como faço para que esse retorno seja apresentado em uma TextBox ?

    Você pode fazer assim:

    dir > arquivo.txt

    E o retorno do dir vai ficar gravado nesse arquivo. Aí você abre o arquivo e coloca o conteúdo no TextBox. E pode apagar o arquivo depois.

    Acho que funciona com todos os comandos, pelo menos com todos que testei deu certo.

    Outro detalhe é que se gravo em um arquivo de texto (usando o FSO) aparece alguns caractéres fora de padrão...tem como corrigir isso ?!

    O que você gravou??

  6. Acho que se for no mesmo programa, sim.

    Não lembro direito, mas há 4 anos atrás eu escrevi isso aqui, na época eu devo ter testado e tudo:

    E as propriedades, como a porta, de cada winsock criado são iguais às propriedades do primeiro winsock, ou eu tenho que setá-las para cada winsock?

    acho q tem q setar a porta sim. mas pode ser a mesma porta, já q como ela esta sendo usada pela mesma aplicacao, não deve dar conflito.

  7. Vou pesquisar sobre isso pois estu achando que tem relação com essa tal variável "Scalar"...sempre que tento passando um nome dá erro apontando para essa variável "Scalar".

    Sei lá do que ele tá falando, acho que ele tá se referindo ao nome do parâmetro, ele deve estar achando que @Nome deveria ser uma variável (pois as variáveis que usamos em procedures no SQL tem @ na frente - assim como os parâmetros também, mas enfim...) mas ainda não foi declarada.

    Não sei se vai dar pra fazer com parâmetros nomeados com o SQL, mas se der deve ser outra sintaxe. Ou talvez funcione somente com Stored Procedures.

  8. Um bit é a unidade mínima de armazenamento de informação para o computador. Cada bit pode ter somente o valor 0 ou o valor 1.

    Não entendo de eletrônica, mas o que eu ouvia dizer era que uma chave ligada seria valor 1 e uma desligada, seria valor 0. Como uma lâmpada acesa ou apagada.

    Um byte é um conjunto de 8 bits.

    Se você se lembra das aulas de análise combinatória, você vai perceber q se cada bit pode ter somente dois valores diferentes (0 ou 1), um conjunto de 8 bits pode ter 28 valores diferentes.

    28 = 256.

    Sendo assim, um byte pode ter 256 valores diferentes, de 0 a 255.

    Se quiser entender como o computador lê um monte de zeros e ums e entende que é um número de 0 a 255, leia sobre sistemas numéricos. Mais precisamente sobre sistema binário: http://wwwusers.rdc.puc-rio.br/rmano/sn1base.html

    Toda informação dentro de um computador é formada por bytes, ou seja, qualquer arquivo salvo no seu HD não passa de um conjunto de números entre 0 e 255 (que por outro lado, são formados por um outro conjunto de zeros e ums).

    Por isso, você percorreu a sua imagem e viu que cada byte é um número de 0 a 255.

    Como o computador sabe que isso é uma imagem?? Foi criado um padrão a ser seguido (ou vários padrões diferentes, por exemplo JPEG, GIF, PNG, etc) que ao ser interpretado pelo algoritmo correto, vai saber qual pixel preencher com que cor formando uma imagem na tela.

    Sendo assim, imagens, músicas, vídeos ou qualquer outro arquivo que estejam no seu computador não passam de um conjunto de números de 0 a 255 (bytes) que, ao serem interpretados de acordo com um padrão já estabelecido, são transformados naquilo que você vê na tela.

    O mesmo vale para textos. Cada letra (ou caractere) não passa de um número de 0 a 255, de acordo com a Tabela ASCII: http://www.asciitable.com/

  9. NamedParameters diz se você vai dar nome ou não aos parâmetros. Do modo como você está fazendo, com ?, os parâmetros não têm nome.

    Então .NamedParameters tem que ser False. Se você quiser escrever os nomes, como fez usando Access, tem que setar como True, mas deve ter alguma particularidade na sintaxe para o SQL para fazer funcionar, pesquisando talvez dê pra descobrir.

  10. é que não costumo usar "ByVal" e "ByRef" :rolleyes:

    A diferença é explicada aqui: http://scriptbrasil.com.br/forum/index.php?showtopic=48769

    mas o "Optional ByRef n As Long = 0&" é opicional, então, se colocar algum valor nesse parâmetro ele vai influenciar em algo na função ??? porque dentro da função o "n" vai receber valor (no caso o tamanho final do arquivo).

    O parâmetro é opcional. Acontece que eu tinha essa função gravada aqui e ela não retornava o tamanho, n era uma variável declarada dentro dela. Aí, como no caso, eu precisava do tamanho, transformei n num parâmetro por referência para que o tamanho fosse retornado de dentro da função. Só que deixei opcional pra que as chamadas já existentes a essa função (que passavam um só parâmetro - o caminho) continuassem funcionando.

    Ou seja, passando ou não o segundo parâmetro a função funciona do mesmo jeito. Se eu não quiser saber o tamanho, não tem necessidade de passar o segundo.

    E no caso dessa função como está, o valor da variável original (no caso, tam) passado para n não fazer diferença, porque a função não vai ler o valor do parâmetro n, ela vai é preencher esse valor para depois retorná-lo à variável original. (Na verdade, a função já acessa a variável original diretamente. Como é por ByRef, o parâmetro n vai apontar diretamente para o local da memória onde está a variável tam)

    Lembrando que não é necessário fazer desse modo pra encontrar o tamanho, imagino que um UBound() + 1& no array retornado deve trazer exatamente o número de bytes ocupados pela imagem.

    só curiosidade...porque não sabia que função retornava mais de um valor...no caso, retornando um vetor de Bytes "b()" e o tamanho do fim do arquivo

    A função mesmo, retorna só um. Mas os parâmetros passados por referência podem também ser usados para retornar valores.

    Já com o SQL Serve está apresentando o seguinte erro:

    Erro2.png

    Acho que tinha que ser assim:

    Inserir = "INSERT INTO InDat(Nome,Foto)VALUES(?,?)"
    ...
    .Parameters.Append .CreateParameter("Nome", adVarChar, adParamInput, 50, txtNome.Text)
    .Parameters.Append .CreateParameter("Foto", adLongVarBinary, adParamInput, tam, b)[/code]

  11. Se é Objeto OLE no Access, o tipo do campo tem que ser adLongVarBinary, acho que o que faltou foi passar o tamanho da imagem no quarto parâmetro.

    Esse código aqui funcionou certinho no Access (são: um campo Texto de 50 posições, um campo Inteiro Longo e um campo Objeto OLE):

    Option Explicit

    Dim cn As New ADODB.Connection, rs As New ADODB.Recordset
    Dim cm As New ADODB.Command, sql As String

    Private Sub Form_Load()
        cn.ConnectionString = "Provider=Microsoft.Jet.OLEDB.4.0;Data Source=" & App.Path & "\x.mdb"
        cn.CursorLocation = adUseClient
        cn.Open
        
        sql = "Insert Into t (xxx, yyy, zzz) Values (@xxx, @yyy, @zzz)"
        
        Const pValor_xxx As String = "valorxy"
        Const pValor_yyy As Long = &HFF&
        
        Dim b() As Byte, tam As Long
        b = ImagemBinario(App.Path & "\pinoko02.jpg", tam)
            
        With cm
            .ActiveConnection = cn
            .CommandText = sql
            .CommandType = adCmdText
            .Parameters.Append .CreateParameter("@xxx", adVarWChar, adParamInput, 50&, pValor_xxx)
            .Parameters.Append .CreateParameter("@yyy", adInteger, adParamInput, , pValor_yyy)
            .Parameters.Append .CreateParameter("@zzz", adLongVarBinary, adParamInput, tam, b)
            
            .Execute
        End With
        
        Erase b
        
        sql = "Select * From t Where yyy = " & pValor_yyy
        Set rs = cn.Execute(sql)
        
        Set Image1.Picture = AbreImagem(rs!zzz)
    End Sub
    Private Sub Form_Unload(Cancel As Integer)
        If rs.State <> 0& Then
            rs.Close
        End If
        If cn.State <> 0& Then
            cn.Close
        End If
        
        Set cm = Nothing
        Set rs = Nothing
        Set cn = Nothing
    End Sub[/code]
    [code]Public Function ImagemBinario(ByVal file As String, Optional ByRef n As Long = 0&)
        Dim b() As Byte, f As Long
        
        f = FreeFile
        Open file For Binary Access Read As f
        
        n = LOF(f)
        If n Then
           ReDim b(1 To n) As Byte
           Get f, , b()
        End If
        
        Close f
        
        ImagemBinario = b()
    End Function
    Public Function AbreImagem(ByRef img As ADODB.Field) As StdPicture
        Dim b() As Byte, f As Long, file As String
        
        file = App.Path & "\kuroi.xxx"
        
        f = FreeFile
        Open file For Binary Access Write As f
        
        b() = img.Value
        Put f, , b()
        
        Close f
        Erase b
        
        Set AbreImagem = LoadPicture(file)
        Kill file
    End Function

    Quanto ao SQL, se o campo é varchar, deve ser adVarChar, se for char, deve ser adChar, mas não sei se isso faz muito diferença para texto.

    Acho que o problema é que o modo de usar parâmetros no SQL deve ser diferente. Vejo as pessoas usando ? em vez de dar nome pros parâmetros, e depois adicionar um por um na ordem em que aparecem na query.

    Ou tente setar a propriedade .NamedParameters do objeto Command como True e veja se tem algum efeito.

    Não sei se imagem também é adLongVarBinary no SQL, mas pra verificar direitinho o tipo de cada campo, você pode fazer um select na tabela e verificar a propriedade rs.Fields(x).Type de cada campo no Recordset.

×
×
  • Criar Novo...