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

Conflito


Denis_Rave

Pergunta

alguém já viu isso antes?

Eu tou usando uma Common pra poder selecionar a figura que eu vou salvar no BD...

beleza...seleciono e salvo ela no BD como objeto BLOB...

só que depois disso, o ADO simplesmente muda o caminho do BD para o o diretorio que a Common parou....muito estranho..alguém sabe o que está acontecendo?

vou postar o código para facilitar ^^

Private Sub cmd_Click(Index As Integer)
Select Case Index
Case 0
    With dlgSelect
        .DialogTitle = "Selecione a imagem..."
        .Filter = "Image Files (*.jpg, *.bmp, *.gif)|*.jpg;*.bmp;*.gif"
        .InitDir = App.Path
        .ShowOpen
        If .FileName = "" Then Exit Sub
        Caminho = .FileName
        If Trim$(Caminho) <> "" Then
            LoadPointerImage (Trim$(Caminho)) 'Aqui ele carrega a imagem numa picture, usando uma funçao
        End If
    End With
Case 1
    If Salvar Then
        ADO.Recordset.Update
        Unload Me
    End If
End Select
End Sub


Function Salvar() As Boolean
Dim strMsg As String
Dim bytBLOB() As Byte
Dim strImagePath As String
Dim intNum As Integer
'Verifica se realmente uma imagem foi selecionada

strImagePath = Trim$(Caminho)
If (Trim$(strImagePath) = "") And (Pic1.Picture = 0) Then
    strMsg = "Por favor selecione uma imagem antes de salvar..."
    MsgBox strMsg, vbExclamation, "Imagem Inválida"
    Exit Function
End If
'Salvando...

With ADO.Recordset
    'Abre a figura
    intNum = FreeFile
    Open strImagePath For Binary As #intNum
    ReDim bytBLOB(FileLen(strImagePath))
    'LÊ os dados e fecha logo após
    Get #intNum, , bytBLOB
    Close #1
    .Fields(7).AppendChunk bytBLOB
End With
Salvar = True
End Function

Se alguém puder me dar uma mao agradeceria ^^

Abraços

Link para o comentário
Compartilhar em outros sites

10 respostass a esta questão

Posts Recomendados

  • 0

Por exemplo..meu ADO está configurado para o Banco de Dados "Album.mdb"...sem o caminho (C:\...)...Eu estou rodando o programa no C:\Album...então, ele deveria buscar o Banco de Dados no C:\Album\Album.mdb correto? mas quando eu seleciono uma figura na Common Dialog, que está em um outro caminho, como por exemplo C:\Figuras...o ADO busca o Banco de Dados em C:\Figuras\Album.mdb...gerando assim um erro

A variavel Caminho foi definida na General Declarations...e sim, é a mesma para as duas Subs...

Link para o comentário
Compartilhar em outros sites

  • 0

Por exemplo..meu ADO está configurado para o Banco de Dados "Album.mdb"...sem o caminho (C:\...)...Eu estou rodando o programa no C:\Album...então, ele deveria buscar o Banco de Dados no C:\Album\Album.mdb correto? mas quando eu seleciono uma figura na Common Dialog, que está em um outro caminho, como por exemplo C:\Figuras...o ADO busca o Banco de Dados em C:\Figuras\Album.mdb...gerando assim um erro

A variavel Caminho foi definida na General Declarations...e sim, é a mesma para as duas Subs...

Na verdade, o ADO está certo. Existem caminhos relativos e absolutos. Se você utiliza o caminho relativo ("Album.mdb", apenas) você está dizendo que ele deve ser procurado no diretório de trabalho, que *não necessariamente* é a pasta do seu executável, e que é alterável por caixas de diálogo e pelas rotinas ChDir e CurDir. É por esta razão que eu sempre utilizo o caminho absoluto ("c:\pasta\album.mdb"). Isso não significa que eu coloque este caminho completo no código, mas sim que eu formo ele completo ao passar o caminho do arquivo a ser aberto. Eu pego o diretório do executável (App.Path) e junto com o nome do banco de dados ("Album.mdb") e é isso que eu passo na string de conexão.

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ah..não sabia dessa de ser alterado pelas caixas de Diálogo, e desses caminhos relativos e absolutos...

Vivendo e aprendendo...xD

Bom, então devo configurar todas as strings de conexão a partir de código, correto? Preciso fazer isso toda vez após o uso de uma caixa de Diálogo ou não?

Abraços

Link para o comentário
Compartilhar em outros sites

  • 0

Ah..não sabia dessa de ser alterado pelas caixas de Diálogo, e desses caminhos relativos e absolutos...

Vivendo e aprendendo...xD

Bom, então devo configurar todas as strings de conexão a partir de código, correto? Preciso fazer isso toda vez após o uso de uma caixa de Diálogo ou não?

Não, desde que você passe o caminho absoluto apenas uma vez ele não tem como ser alterado. Então, você só precisa fazer no momento em que o BD é aberto (você abre ele mais de uma vez durante a execução?).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi o que você quis dizer com Abre mais de uma vez...tipo, uso varios ADO's em diferentes forms...penso que devo passar a String de Conexão para cada ADO, correto?

Como ficaria essa string...montei aqui mas não deu certo..o mesmo erro acontece...

Link para o comentário
Compartilhar em outros sites

  • 0

Não entendi o que você quis dizer com Abre mais de uma vez...tipo, uso varios ADO's em diferentes forms...penso que devo passar a String de Conexão para cada ADO, correto?

Como ficaria essa string...montei aqui mas não deu certo..o mesmo erro acontece...

Ah, você utiliza o ADODC? Eu nunca gostei de datacontrols, por isso sempre abro apenas uma única conexão (um objeto que está em um módulo) e depois abro e fecho apenas os recordsets necessários. A conexão fica aberta o tempo todo e só é fechada quando o sistema é fechado. No caso de vários ADODCs, você tem uma conexão para cada (o que é um desperdício, mas é como o ADODC funciona), portanto realmente você vai precisar passar o caminho completo para cada um deles (via código, é claro).

Abraços,

Graymalkin

Link para o comentário
Compartilhar em outros sites

  • 0

Ah sim...então no caso seria só passar o caminho do banco de dados no ADO.ConnectString...ou teria também que adicionar aquele "Provider..."?

Faria isso quando o programa iniciasse pela primeria vez...

Tem que ser a string de conexão toda. Não só o caminho.

Abraços,

Graymalkin

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,2k
    • Posts
      652k
×
×
  • Criar Novo...