1. Este site usa cookies. Ao continuar a usar este site está a concordar com o nosso uso de cookies. Saber Mais.

VB6 Datagrids e Access SQL ( updated )

Discussão em 'Programação' iniciada por eXcept, 7 de Outubro de 2005. (Respostas: 10; Visualizações: 1258)

  1. eXcept

    eXcept Power Member

    Viva.

    Estou a tentar trabalhar com uma Datagrid em VB6, e precisava que, ao seleccionar/clicar numa linha da grid, os campos fossem copiados para textbox's. No entanto, não sei como chamar essa dita linha, e como é que esta fica representada.

    Alguem me pode ajudar?

    Thanks
     
    Última edição: 9 de Outubro de 2005
  2. _Axe___

    _Axe___ 1st Folding then Sex

    é mto simples...

    supondo q a tua data grid se xama "datagrid1" e tu keres passar o campo 1 e 2 da linha seleccionada para 2 textboxs, seria mais ou menos uma coisa assim...

    ...

    Private Sub DataGrid1_Click()

    Text1(0).Text = DataGrid1.Columns(1)
    Text1(1).Text = DataGrid1.Columns(2)

    end sub

    ....

    claro q se tiveres a grid vazia e clickares vai dar erro mas pa prevenires isso podes fazer uma manha qq tipo um if a testar se o recordset ta vazio ele sai da rotina...

    xpero ter ajudado, se for preciso mais alguma coisa, shooot!
     
  3. eXcept

    eXcept Power Member

    erm..ainda não testei, mas isso não me vai fazer o dump da coluna toda?

    a grid será

    a1 a2 a3 a4
    b1 b2 b3 b4

    ao clicar na linha a, kero que ele me meta na text1(0) o a1, na text1(1) o a2, e por aí adiante...
     
  4. eXcept

    eXcept Power Member

    anyways, testando esse codigo dá-me um erro...data access error ...
     
  5. _Neo__

    _Neo__ Power Member

    esta velharia é para flexgrid e na tive tempo de testar em data grid mas deve te dar umas ideias

    --------------------------------

    Option Explicit 'SIM EU USO DISTO E GOSTO :P

    Dim lngLastRow As Long

    Private Sub FG_Click()
    txtGrid.Width = FG.ColWidth(1) - 15
    txtGrid.Height = FG.RowHeight(FG.Row) - 15
    txtGrid.Top = FG.Top + FG.RowPos(FG.Row)
    txtGrid.SetFocus
    lngLastRow = FG.Row
    txtGrid.Text = FG.TextMatrix(FG.Row, 1)
    txtGrid.SelStart = Len(txtGrid.Text)
    End Sub

    Private Sub FG_KeyUp(KeyCode As Integer, Shift As Integer)
    FG_Click
    End Sub

    Private Sub txtGrid_Change()
    FG.TextMatrix(lngLastRow, 1) = txtGrid.Text
    End Sub

    EDIT: para isto trabalhar mete uma flexgrid nome FG e uma textbox nome txtGrid e alinha a textbox com a coluna em questão (mete mesmo por cima de uma celula) e vais ver a ideia q usei em alguns programas

    EDIT 2: axo q a o que te interessa é txtGrid.Text = FG.TextMatrix(FG.Row, 1)
     
    Última edição: 8 de Outubro de 2005
  6. _Neo__

    _Neo__ Power Member

    data access error aparecia-me quando tinha um campo tipo booleano (y/n), numérico, ou data, tinha de garantir que os campos estavam iguais á tabela para ele não dar esse erro ex: um campo numerico era lido para uma textbox ao mudar de registro, eu imediatamente voltava a gravar o campo na bd, e voltava tb a gravar quando o utilizador modificava o valor da textbox, isto evita muitos problemas
     
  7. eXcept

    eXcept Power Member

    Obrigado pelas ajudas.

    Outro problema agora.

    SQL e Access
    Como var global
    Código:
    Dim WithEvents sacaip As Recordset
    Dentro de uma Sub
    Código:
    Set sacaip = New Recordset
    sacaip.Open "select ip from pcs where nomepc = varnome", db, adOpenStatic, adLockOptimistic
    
    Dá-me um erro "Arguments are the wrong type, out of acceptable range or in conflict with another"

    Alguma ideia do que estará mal?
     
  8. _Neo__

    _Neo__ Power Member

    varnome isso é reconhecido pela bd ou é uma variavel??

    se for variavel do vb usa

    sacaip.Open "select ip from pcs where nomepc = " & varnome & " , db, adOpenStatic, adLockOptimistic
     
  9. _Neo__

    _Neo__ Power Member

    para aprenderes sobre dbs podes começar por usar o data environment

    no project explorer da butão direito -> add -> data environment
     
  10. eXcept

    eXcept Power Member

    Código:
    Private Sub Form_Load()
     Dim db As Connection
      Set db = New Connection
      db.CursorLocation = adUseClient
      db.ConnectionString = "Provider=Microsoft.Jet.OLEDB.3.51;" & "Data Source=data\data97.mdb"
      db.Open
    Set adoRecordSet = New Recordset
      adoRecordSet.Open "select nomepc,ip,seccao,user from pcs", db, adOpenStatic, adLockOptimistic
    ...
    
    
    até aqui funciona bem

    quando uso esse tal código

    Código:
    Private Sub ListView1_click()
    Dim varnome As String
    varnome = ListView1.SelectedItem
    Text1(0) = varnome
    Set sacaip = New Recordset
    sacaip.Open "select ip from pcs where nomepc = " & varnome & ", db, adOpenStatic, adLockOptimistic"
    End Sub
    aparece este erro

    [​IMG]

    :|

    sabes porquê?

    EDIT: tentei criar uma nova ligação à DB dentro da sub listview1_click, mas aparece o mesmo erro :|
     
  11. _Neo__

    _Neo__ Power Member

    tenta

    sacaip.Open "select * from pcs where nomepc = " & varnome & ", db, adOpenStatic, adLockOptimistic"

    ----------------

    suponho q Text1(0) = varnome seja para atribuir o varnome ao texto da textbox, mete Text1(0).Text (isto não serve para muito mas deixa um codigo mais explicito)

    ------------------

    tenta o data environment q é mais simples

    desculpa mas a estas horas já não estou a pensar bem
     

Partilhar esta Página