- Код: Выделить всё
- SELECT * FROM TABLE1 WHERE * = 'VALUE1'
В этом запросе допущена ошибка для аглядности. Как реализовать вышеописанное?


SELECT * FROM TABLE1 WHERE * = 'VALUE1'






:shock:sergey-911 писал(а):каждое поле - поставщик.





'Заполнение грида всеми данными
Dim Soedinenie As String     'Параметры подключения
Dim query As String
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
MousePointer = 11
Soedinenie = "PROVIDER=MSDASQL;dsn=PRICE;uid=USER1;pwd=PASS;"
query = "SELECT * FROM Table1 "
Set cn = New ADODB.Connection
cn.Open (Soedinenie)
Set rs = cn.Execute(query)
Set VSFlexGrid1.DataSource = rs
Set VSFlexGrid1.DataSource = Nothing
rs.Close
Set rs = Nothing
Set cn = Nothing
MousePointer = vbDefault
'Поиск1
Dim Soedinenie As String
Dim query As String
Dim rs As ADODB.Recordset
Dim cn As ADODB.Connection
Dim i As Integer
MousePointer = 11
Soedinenie = "PROVIDER=MSDASQL;dsn=PRICE;uid=USER1;pwd=PASS;"
query = "SELECT * FROM Table1 WHERE "
VSFlexGrid1.Row = 0
For i = 1 To VSFlexGrid1.Cols - 1
    VSFlexGrid1.Col = i
    query = query & "[" & VSFlexGrid1.Text & "] Like '%" & Replace(Text1.Text, "*", "_") & "%' OR "
Next
VSFlexGrid1.Col = i
query = query & "[" & VSFlexGrid1.Text & "] Like '%" & Replace(Text1.Text, "*", "_") & "%'"
Set cn = New ADODB.Connection
cn.Open (Soedinenie)
Set rs = cn.Execute(query)
Set VSFlexGrid1.DataSource = rs
Set VSFlexGrid1.DataSource = Nothing
rs.Close
Set rs = Nothing
Set cn = Nothing
MousePointer = vbDefault
VSFlexGrid1.Row = 0
For i = 1 To VSFlexGrid1.Cols - 1
    VSFlexGrid1.Col = i
    While Not rs.EOF
        If Text1.Text = rs.Fields(0) & "" Then
            VSFlexGrid1.IsSelected(j) = True 'Выделяем запись в таблице
        End If
        rs.MoveNext
    Wend
Next

sergey-911 писал(а):запчасти. Ты имеешь ввиду
Private Sub txFilter_Change()
    Static sOld As String
    Dim s As String, jc As GridEX20.JSColumn, ss As String, r As DAO.Recordset
    s = Trim$(txFilter.Text)
    If 0 = StrComp(s, sOld, vbTextCompare) Then Exit Sub
    sOld = s
    Set r = Grid.Recordset
    If Len(s) Then
        If Left$(s, 1) <> "*" Then s = "*" & s
        If Right$(s, 1) <> "*" Then s = s & "*"
        s = " LIKE '" & Replace(s, "'", "''") & "'"
        For Each jc In Grid.Columns
            If jc.Visible Then
                If Len(ss) Then ss = ss & " OR "
                ss = ss & jc.DataField & s
            End If
        Next jc
        m_r.Filter = ss
        Grid.HoldFields
        Set Grid.Recordset = m_r.OpenRecordset
    Else
        Grid.HoldFields
        Set Grid.Recordset = m_r
    End If
End Subsergey-911 писал(а):А что ты имеешь ввиду под програмным перебором RecordSet-a? Не:
For Each f In r.Fields
    Select Case f.Type
        Case adInteger, adLong, adByte
             ....
        Case adVarWChar, adWChar, adVarChar, adChar
             ....
    End Select
Nextsergey-911 писал(а):Кстати, не подскажешь, почему Grid Заполняется гораздо быстрее через DataSet, нежели, если его заполнять в цикле (VSFlexGrid1.Text = rs.Fields(0) &"" )?

        Grid.HoldFields 
        Set Grid.Recordset = m_r 
Dim Soedinenie As String 
Dim query As String 
Dim rs As ADODB.Recordset 
Dim cn As ADODB.Connection 
query = "Команда SQL" 
Set cn = New ADODB.Connection 
cn.Open (Soedinenie) 
Set rs = cn.Execute(query) 
rs.Close 
Set rs = Nothing 
Set cn = Nothing 
rs.Close 
Set rs = Nothing 
Set cn = Nothing 



sergey-911 писал(а):А для чего узнавать тип поля?
sergey-911 писал(а):Извини за назойливость. Не объяснишь, что значит
Grid.HoldFieldssergey-911 писал(а):И правильно, ибо DAO отжил свое. Я же писал что делал для старой программы.
sergey-911 писал(а):Нужно ли это делаьть, или это только отнимает ресурсы системы - т.е. не лучше один раз открыть соединение, а при выходе из программы - закрыть?
sergey-911 писал(а): И еще, при выходе из системы, соединение автоматически не разрывается?


sergey-911 писал(а):Каким гридом ты сейчас пользуешься?
sergey-911 писал(а):Что значит, куда денется? Я имею ввиду, если в программе изначально установить соединение, а закрывать, при выходе из нее. В случае ошибки в программе, соединение не будет ли "висеть" (оставаться подключенным в памяти машины), ведь соединение "принудительно", не закрыли?


sergey-911 писал(а):Не скажешь, как ентот грид сделать полноценно работающим?

sp_columns MyTadle


CREATE PROCEDURE [sp_TableColumn]
--Процедура вывда  колонок таблиц, доступных данному пользователю
    @Table [varchar] (100) = NULL      -- Название таблицы
AS
   
   IF @Table is NOT NULL
   BEGIN               -- Вывод всех колонок указанной таблицы, доступных данному пользователю
      SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM information_schema.columns 
      WHERE TABLE_NAME IN (@Table) AND TABLE_NAME <> 'dtproperties'
      ORDER BY TABLE_NAME
   END
   ELSE
   BEGIN               -- Вывод всех таблиц и колонок, доступных данному пользователю
      SELECT TABLE_NAME, COLUMN_NAME, DATA_TYPE FROM information_schema.columns
      WHERE 
      TABLE_NAME IN (SELECT TABLE_NAME FROM information_schema.tables WHERE table_type in ('base table') AND TABLE_NAME <> 'dtproperties')
      OR
      TABLE_NAME IN (SELECT TABLE_NAME FROM information_schema.tables WHERE table_type in ('VIEW'))
      AND TABLE_NAME LIKE 'vw%'
      ORDER BY TABLE_NAME
   END 

CREATE PROCEDURE [sp_Column]
--Процедура вывда  колонок таблиц, доступных данному пользователю
    @Table [varchar] (100) = NULL      -- Название таблицы
AS
   
   IF @Table is NOT NULL
   BEGIN               -- Вывод всех колонок указанной таблицы, доступных данному пользователю
      SELECT TABLE_NAME +'.' + COLUMN_NAME [Column] FROM information_schema.columns 
      WHERE TABLE_NAME IN (@Table)  AND TABLE_NAME <> 'dtproperties'
      ORDER BY TABLE_NAME
   END
   ELSE
   BEGIN               -- Вывод всех таблиц и колонок, доступных данному пользователю
      SELECT TABLE_NAME + '.' + COLUMN_NAME AS [Column] FROM information_schema.columns
      WHERE 
      TABLE_NAME IN (SELECT TABLE_NAME FROM information_schema.tables WHERE table_type in ('base table') AND TABLE_NAME <> 'dtproperties')
      OR
      TABLE_NAME IN (SELECT TABLE_NAME FROM information_schema.tables WHERE table_type in ('VIEW'))
      AND TABLE_NAME LIKE 'vw%'
      ORDER BY TABLE_NAME
   END 
Сейчас этот форум просматривают: нет зарегистрированных пользователей и гости: 4