Visual Basic, .NET, ASP, VBScript
 

   
   
     

Форум - Работа с данными

Страница: 1 | 2 |

 

  Вопрос: VB 6, Элемент DataGrid как удалить выбранные строк Добавлено: 30.11.05 10:40  

Автор вопроса:  z3f

Ответить

  Ответы Всего ответов: 26  

Номер ответа: 16
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #16 Добавлено: 07.12.05 10:31
откуда я возьму имя поля?
имя солбца? - дык оно мне не нужно.

Имя столбца, если угодно.
Ладью тоже можно назвать турой. Но не нужно.

имя строки?

Имя строки - это значение того поля, которое ID.


Скажи мне.
А есть ли у тебя в таблице первичный ключ?
И если нет, то на основании чего ты собрался отличать одну строку от другой?

Ответить

Номер ответа: 17
Автор ответа:
 v00j00



ICQ: 249622331 

Вопросов: 0
Ответов: 4
 Профиль | | #17 Добавлено: 07.12.05 14:25
Я, например, никогда не использую ADODC, ибо лажа


и в чем заключается лажа

Ответить

Номер ответа: 18
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #18 Добавлено: 07.12.05 16:07
и в чем заключается лажа

В ограниченности возможностей по сравнению с ADODB и в необходимости таскать контрол.

Ответить

Номер ответа: 19
Автор ответа:
 z3f



Вопросов: 3
Ответов: 10
 Профиль | | #19 Добавлено: 07.12.05 17:06
А есть ли у тебя в таблице первичный ключ?


конечно есть и он явлется первым столбцом с именем index

и как он может мне помочь в том чтобы запихать есть в рекорд сет

Ответить

Номер ответа: 20
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #20 Добавлено: 07.12.05 17:24
Не надо запихивать есть в рекорд сет.

Если ты знаешь rst!Index, то что мешает тебе потом изменять запись, используя это значение?

Ответить

Номер ответа: 21
Автор ответа:
 z3f



Вопросов: 3
Ответов: 10
 Профиль | | #21 Добавлено: 07.12.05 17:50
Не надо запихивать есть в рекорд сет.


а вот мне надо это сделать!
потому что была написана процедура моим предшественником которая удаляла строку из базы по рекодсету =(
вот мне и нужно заполучить этот рекордсет долбаный =(
то есть мне нужна строчка в виде рекордсета для того чтобы удалить ее из базы...

Ответить

Номер ответа: 22
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #22 Добавлено: 08.12.05 13:03
У тебя уже есть рекордсет. Это источник данных твоей сетки.

Ответить

Номер ответа: 23
Автор ответа:
 z3f



Вопросов: 3
Ответов: 10
 Профиль | | #23 Добавлено: 08.12.05 14:09
У тебя уже есть рекордсет. Это источник данных твоей сетки.


мне нужен рекордсет состоящий из одного поля - преназначенного для удаления.
вот я и пытаюсь его организовать =(
как это сделать?

Ответить

Номер ответа: 24
Автор ответа:
 GSerg



Вопросов: 0
Ответов: 1876


 Профиль | | #24 Добавлено: 08.12.05 16:25
как это сделать?

Устранить кашу.


Расскажи про свою процедуру удаления.

Ответить

Номер ответа: 25
Автор ответа:
 artem



Вопросов: 0
Ответов: 2
 Профиль | | #25 Добавлено: 22.05.10 18:17
Private Sub DataGrid_MouseMove(Button As Integer, Shift As Integer, X As Single, Y As Single)
If Y > DataGrid.RowHeight And Y < DataGrid.RowHeight * DGStudent.VisibleRows + 226 Then
If DataGrid.Row <> -1 Then
DataGrid.Row = (Y \ DGStudent.RowHeight) - 1
End If
End If
End Sub

Вот эта процедура будет выделять строку за мышью, условия на заголовок в одну строку, чтобы не забегала выше положенного и проверка на пустую таблицу, если нет строк чтобы не ругалась.
If DataGrid.Row <> -1 Then
Adodc1.Recordset.Delete
Adodc1.Refresh
DataGrid.ReBind
DataGrid.Refresh
End If

а вот это можно на кнопку поместить для удаления. Единственная проблема: Refresh почему-то не обновляет таблицу, закроешь-откроешь форму и все в порядке, пытаюсь выяснить почему.
Adodc1.Recordset.Delete' содержит именно ту строку, на которой установлен кусрор

Ответить

Номер ответа: 26
Автор ответа:
 artem



Вопросов: 0
Ответов: 2
 Профиль | | #26 Добавлено: 22.05.10 18:47
Вот нашел на другом форуме, переделал немного и все работает. Удаляет ту строку на которой находится курсор и обновляет таблицу.
  1. Dim book As Variant
  2. Dim coll As Integer
  3. If DGStudent.Row <> -1 Then
  4. Adodc1.Recordset.Delete
  5. On Error Resume Next
  6. book = Adodc1.Recordset.Bookmark
  7. coll = DataGrid.Col
  8. Adodc1.Refresh
  9. Adodc1.Recordset.Bookmark = book
  10. DataGrid.Col = coll
  11. End If


кстати вот еще подсказка: если нужно чтобы в таблице вся строка следом за мышью выделялась полностью, измените параметр в DataGrid: правой кнопкой по таблице: Properties-->вкладка Splits --> поле Marquee Style --> значение 4-dbgHighlightRowRaiseCell.
И еще, чтобы не было трудно ловить нужную строку сделайте контекстное меню, и там строку "Удалить строку" и на нее вышеизложенный код. если надо как сделать контекстное меню - пишите

Ответить

Страница: 1 | 2 |

Поиск по форуму



© Copyright 2002-2011 VBNet.RU | Пишите нам