VB6 Datagrids e Access SQL ( updated )

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:
é 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!
 
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...
 
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:
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
 
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?
 
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
 
para aprenderes sobre dbs podes começar por usar o data environment

no project explorer da butão direito -> add -> data environment
 
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

erro2.jpg


:|

sabes porquê?

EDIT: tentei criar uma nova ligação à DB dentro da sub listview1_click, mas aparece o mesmo erro :|
 
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
 
Back
Topo