powered by simpleCommunicator - 2.0.59     © 2025 Programmizd 02
Целевая тема:
Создать новую тему:
Автор:
Закрыть
Цитировать
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
68 сообщений из 68, показаны все 3 страниц
Подскажите в чем проблема
    #36685286
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
-2147467259 [MySQL][ODBC 3.51 Driver][mysqld-5.1.38-community]Cannot add or update a child row: a foreign key constraint fails (`it`.`sales`, CONSTRAINT `usluga_id` FOREIGN KEY (`id`) REFERENCES `uslugi` (`id`) ON UPDATE CASCADE)
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
24.
25.
26.
27.
28.
29.
30.
31.
32.
33.
34.
35.
Private Sub ado(a As String)
Adodc1.ConnectionString = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=it; User=root;Password=506;Option=3;"
Adodc1.CommandType = adCmdText
Adodc1.RecordSource = "select * from " + a
Adodc1.Refresh
Set DataGrid1.DataSource = Adodc1
End Sub
Private Sub Command2_Click()
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.Text
Adodc1.Recordset("date").Value = Text2.Text
Adodc1.Recordset("amount").Value = Val(Text1.Text)
Adodc1.Recordset.Update
End Sub

Private Sub Form_Load()
ado ("sales")
Text2.Text = Str(Date)
Conn.Open "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=it; User=root;Password=506;Option=3;"
Set r = Conn.Execute("select * from uslugi")
k =  0 
r.MoveFirst
    Do Until r.EOF
        a = r.Fields("id").Value
        b = r.Fields("name").Value
        Combo1.AddItem a, k
        List1.AddItem (Str(a) + vbTab + b)
        'MsgBox a
        r.MoveNext
        k = k +  1 
    Loop

r.Close
Combo1.Text = "УСЛУГИ"
Combo2.Text = "Клиенты"
End Sub
проблема в том что первая запись добавилась нормально , при добавлении второй стала выходить такая ошибка, ниже структура базы данных(Mysql 5)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685288
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
подскажите в чем проблема , может добавлять лучше через запрос?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685292
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
форма для наглядности
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685296
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Что неясно в сообщении об ошибке? Тебе известно, что такое constraint, ключ и внешний ключ?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685305
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
понятно что есть primary key в таблице uslugi (id), есть foreign key в таблице sales (usluga_id)
и связь есть между ними, только я че то не понимаю в чем проблема
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685309
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
понятно что есть primary key в таблице uslugi (id), есть foreign key в таблице sales (usluga_id)
и связь есть между ними, только я че то не понимаю в чем проблема

Ну проблему-то ты и не изложил, то бишь не указал, что ты делаешь и на какой строке возникает эта ошибка, так что я только предполагаю, что на Adodc1.Recordset.Update

Еще вопрос, ты с полной ответственностью за свои действия поставил каскадное обновление?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685326
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
сегодня читал про каскадное обновление (в случае обновления данных в таблице uslugi,обновляются данные и в таблице sales), хотелось чтобы было так))
Shocker.ProНу проблему-то ты и не изложил, то бишь не указал, что ты делаешь и на какой строке возникает эта ошибка, так что я только предполагаю, что на Adodc1.Recordset.Update
именно на этой строке и вышла ошибка
а хотел потренироваться и узнать , как связи работают , как работать с несколькими таблицами,
задача состоит в следующем выбираем услугу из комбо и добавляем данные в ячейку, только первая запись прошла нормально , но почему со второй проблема
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685334
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Я с MySQL - редактором не очень, ты уверен, что вот тут все правильно задал?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685339
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
вот блин ))) он автоматом сам так проставил.
поменял как вы показали и нормально)) спасибо.
а разве для целостности данных , не лучше использовать каскадное обновление?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685343
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
и еще вопрос хотел задать,
не удобно использовать комбо в этих целях(так как там ключ а по нему искать потом запись в листбоксе не очень удобно ,для того чтобы правильно выбрать нужный ключ), может посоветуете вы сами как это реализуете?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685344
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Ну и че тогда MySQL про каскадное обновление вопил в сообщении об ошибке. Оно в данном случае никаким боком...

aduka05admа разве для целостности данных , не лучше использовать каскадное обновление?

А зачем тебе каскадное обновление? Ты собираешься ключи менять в таблице услуг? Это, по меньшей мере, странно.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685345
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admне удобно использовать комбо в этих целях(так как там ключ а по нему искать потом запись в листбоксе не очень удобно ,для того чтобы правильно выбрать нужный ключ), может посоветуете вы сами как это реализуете?

см. свойсво комбобока ListItem
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685359
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proсм. свойсво комбобока ListItem
ой, соррисорри, спутал
в общем так:
Код: plaintext
1.
2.
3.
a = r.Fields("id").Value
b = r.Fields("name").Value
Combo1.AddItem b
Combo1.ItemData(Combo1.NewIndex) = a

Код: plaintext
1.
2.
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.ItemData(Combo1.ListIndex)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685368
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProА зачем тебе каскадное обновление? Ты собираешься ключи менять в таблице услуг? Это, по меньшей мере, странно.
просто в 1с менял код в номенклатуре руками , поэтому думал лишним не будет)
а как сделать так чтобы как в 1с по типу создавать документ и добавлять туда несколько записей , насколько я понимаю это создается отдельно таблица с номерами документов и записей в нем , сколько записей ,столько и строчек с номерами документов ,а в форме записывается это все в массив а далее запись идет всех записей в таблицу?а журнал документов реализуется , примерно так через запрос выводим все записи с номерами документов и группируем ?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685370
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.ProShocker.Proсм. свойсво комбобока ListItem
ой, соррисорри, спутал
в общем так:
Код: plaintext
1.
2.
3.
a = r.Fields("id").Value
b = r.Fields("name").Value
Combo1.AddItem b
Combo1.ItemData(Combo1.NewIndex) = a

Код: plaintext
1.
2.
Adodc1.Recordset.AddNew
Adodc1.Recordset("usluga_id").Value = Combo1.ItemData(Combo1.ListIndex)

примерно так и думал , только думал что индекс в комбо по любому должен идти по порядку (0.1.2.3)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685378
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admпросто в 1с менял код в номенклатуре руками , поэтому думал лишним не будет)
Не смешивай.
В 1С, помимо кода, есть еще UID - вот он-то и является настоящим ключом и по нему идет связь между таблицами, а не по коду.

aduka05admа как сделать так чтобы как в 1с по типу создавать документ и добавлять туда несколько записей , насколько я понимаю это создается отдельно таблица с номерами документов и записей в нем , сколько записей ,столько и строчек с номерами документов ,а в форме записывается это все в массив а далее запись идет всех записей в таблицу?а журнал документов реализуется , примерно так через запрос выводим все записи с номерами документов и группируем ?
Не, зачем дублировать данные?
Делается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.

А где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685381
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admпримерно так и думал , только думал что индекс в комбо по любому должен идти по порядку (0.1.2.3)
Индекс и ItemData - не одно и то же.
Индекс определяет сортировку и насильно задавать его совершенно необязательно. Сортировку надо указывать в select-e, который данные для загрузки готовит.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685389
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProДелается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.
и там где содержимое в каждой записи проставляется ключ документа?
Shocker.ProА где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
и очищаете ее потом?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685391
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Shocker.ProДелается две связанных таблицы, в одной - реквизиты документа (номер, тип, дата, контрагент и т.п.), а в другой - содержимое - код товара, цена, ставка НДС, бух.счет и т.п. Посмотри в конфигураторе - там же все очевидно.
и там где содержимое в каждой записи проставляется ключ документа?
Shocker.ProА где редактировать данные... Ну это от фантазии зависит. Лично я последнее время редактируемое содержимое держу в отдельной таблице прямо в базе.
и очищаете ее потом?

Разумеется * 2

Все, ушел спать.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685392
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
для создания форм visual basic используете?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36685393
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723617
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,

а в чем смысл связывания тогда?
если вдруг пользователь решит удалить данные?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723643
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admа в чем смысл связывания тогда?
если вдруг пользователь решит удалить данные?

Это соблюдение принципов ЦЕЛОСТНОСТИ ДАННЫХ (перечитай это словосочетание 10 раз).

Необязательно пользователь удалит данные. Ты можешь ошибиться в программе (причем ошибка может быть такая, которая проявляется раз в год), в результате чего могут либо удалиться данные, либо вставиться неправильные данные. Ты можешь начать править базу руками при какой-то модернизации и т.п. Наличие связи не даст тебе допустить такую ошибку - операция по изменению/удалению основного ключа или по вставке неправильных данных просто не будет выполнена.

Кроме того, БД становится гораздо сопровождаемее. Любой программер, который будет дорабатывать базу, откроет диаграмму и разберется, как устроена база. Да и ты сам через пару-тройку лет окажешься в такой ситуации.

По этой же причине надо максимально точно определять типы данных в таблицах, обязательно запрещать NULL там, где по логике вещей его возникнуть не должно и т.п.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36723701
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724400
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
решение не нашел
смотрел здесь ,хотя много интересного описано там
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724401
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
решение не нашел
смотрел здесь ,хотя много интересного описано там
Так решение чего? Ты повнятней изложи проблему, я подскажу.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724406
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
начало
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724417
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
начало

Да, но проблему я не понял.
Ты создаешь функцию и размещаешь ее в модуле, в качестве параметра передаешь ФлексГрид. Проблема-то в чем?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724428
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
в том что у меня несколько гридов,
пример названий FlexGrid1,FlexGrid2,FlexGrid3
так мне надо чтобы допустим написав flexname(3) или flexname(2)(это вызов функции)
работать с конкретным гридом какой мне нужен будь то первый или третий
этот код
Код: plaintext
1.
2.
Private gridname As FlexGridPlus
Public Sub flexname(flexnum as integer)
Set gridname = ME.Controls.Item("FlexGridPlus" + Str(flexnum)) 
не будет работать в модуле
так вот хотелось бы узнать как сделать то же самое но в модуле
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724434
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
в том что у меня несколько гридов,
пример названий FlexGrid1,FlexGrid2,FlexGrid3
так мне надо чтобы допустим написав flexname(3) или flexname(2)(это вызов функции)
работать с конкретным гридом какой мне нужен будь то первый или третий
этот код
Код: plaintext
1.
2.
Private gridname As FlexGridPlus
Public Sub flexname(flexnum as integer)
Set gridname = ME.Controls.Item("FlexGridPlus" + Str(flexnum)) 
не будет работать в модуле
так вот хотелось бы узнать как сделать то же самое но в модуле

ненене
Код: plaintext
Public Sub flexname(flex as FlexGridPlus)
(я не зря тебе давал ссылку на тутти-фрутти, мы с ним нечто похожее обсуждали)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724435
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
ну да с treeview по мойму называлось , но че то я подумал там другое
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724444
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admну да с treeview по мойму называлось , но че то я подумал там другое

Смысл в том, что ты передаешь в свою функцию не номер сетки, а непосредственно сетку (ссылку на нее). Иначе тебе пришлось бы передавать в модуль не только номер сетки, но и ссылку на форму, на которой она расположена, а в этом нет никакого смысла.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724447
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
прописал так в модуле
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
Public Sub flexname(gridname As FlexGridPlus)
MsgBox gridname.Name
gridname.Cols = rs.Fields.Count
gridname.Rows =  1 
gridname.ColWidth( 1 ) =  2000 
gridname.ColWidth( 2 ) =  1000 
For i =  0  To rs.Fields.Count -  1 
    gridname.TextMatrix( 0 , i) = rs.Fields(i).Name
Next i
Do While Not rs.EOF
    gridname.Rows = gridname.Rows +  1 
    For i =  0  To rs.Fields.Count -  1 
    If Not rs.Fields(i) = "" Then
        gridname.TextMatrix(gridname.Rows -  1 , i) = rs.Fields(i)
    End If
    Next i
rs.MoveNext
Loop
Set Conn = Nothing
Set rs = Nothing
End Sub
вызываю
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command1_Click()
strsql = "Select d.name, r.date , r.time from registr as r " + _
" right JOIN documents as d on r.nom_doc= d.id"
query (strsql)
flexname ("FlexGridPlus1")
' либо так 
flexname (Me.FlexGridPlus1)
End Sub
че то не получается
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724473
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
решилась проблема так
Код: plaintext
flexname FlexGridPlus2
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724484
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
подскажите а как на кнопке делают рисунок
по типу дискетка или плюс(иконки)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724511
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
разобрался спасибо
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724514
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
процедура вызывается либо так:
Код: plaintext
MyProc Param1, Param2
либо так:
Код: plaintext
Call MyProc(Param1, Param2)

тут:
Код: plaintext
flexname ("FlexGridPlus1")
вообще фигня - тип параметра FlexGridPlus, а ты ему отдаешь строку
максимум так:
Код: plaintext
flexname Me.Controls("FlexGridPlus1")

тут:
Код: plaintext
flexname (Me.FlexGridPlus1)
возник очень хитрый эффект. Наличие скобок - это уже начинается выражение, а Me.FlexGridPlus1 - это объект, чтобы он поучаствовал в выражении, от него берется значение свойства по умолчанию (не знаю, что там, возможно текст текущей ячейки).
То есть если бы параметр процедуры был числом, это прокатило бы, а с объектом - возникает этот эффект

Ну молодец, что разобрался, просто хорошо бы понимать эти моменты.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724531
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
спасибо
автор Наличие скобок - это уже начинается выражение
что понимается под выражением?
то есть объекты надо передавать без скобок так понял
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724543
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
еще кое что хотел спросить
я делаю так
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
10.
11.
12.
13.
14.
15.
16.
17.
18.
19.
20.
21.
22.
23.
strsql = "Select * from clients"
query (strsql)
k =  0 
rs.MoveFirst
Do Until rs.EOF
    a = rs.Fields("id").Value
    b = rs.Fields("name").Value
    Combo1.AddItem b, k
    Combo1.ItemData(Combo1.NewIndex) = a
    rs.MoveNext
    k = k +  1 
Loop
strsql = "Select * from uslugi"
query (strsql)
k =  0 
rs.MoveFirst
Do Until rs.EOF
    a = rs.Fields("id").Value
    b = rs.Fields("name").Value
    Combo2.AddItem b, k
    Combo2.ItemData(Combo2.NewIndex) = a
    rs.MoveNext
    k = k +  1 
Loop
ну вот будет у меня в таблице clients 40000 тысяч записей ,
такая конструкция будет очень долго загружать все данные в combobox или msflexgrid
за счет чего в той же самой 1с так быстро загружаются все данные в грид
или у них загрузка идет при запуске программы , а далее догружается чтоли ?
и если так то неужели это все висит в оперативной памяти , комп по идее должен жестко висеть
после всего этого
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724703
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admза счет чего в той же самой 1с так быстро загружаются все данные в грид
или у них загрузка идет при запуске программы , а далее догружается чтоли ?
У них не загружаются данные в грид полностью, они подгружаются из базы по мере прокрутки грида.
Обрати внимание, как идиотски ведет себя квадратик на линейке прокрутки.

Грид в Аксессе поступает так же. Связанный ДБГрид возможо тоже, но я им не пользовался, не наблюдал за ним.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724731
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admчто понимается под выражением?
вот определение выражения из хелпа:
expression
Any combination of operators, constants, literal values, functions, names of columns, controls, and properties that result in a single value. In a query, you can use expressions anywhere that you can use a column name. In the Query Designer, you can use expressions as settings for many action and properties arguments, to set criteria or define calculated fields in queries, and to set conditions in macros. In the Database Designer, you can use expressions to define check constraints.

То есть
5 - не выражение
5+2 - выражение
(5+2)*3 - выражение
(5) - с точки зрения VB получается тоже выражение

TextBox1 - не выражение (это ссылка на объект)
TextBox1 & TextBox2 - выражение (конкатенация), однако для большей ясности правильно было бы записать TextBox1.Text & TextBox2.Text. То есть VB неявно берет свойство объекта по умолчанию, что в данном случае - Text
(TextBox1) - это выражение, хоть и неочевидно. А так как выражение - VB опять же берет свойство по умолчанию, то есть это эквивалентно TextBox1.Text. То есть это уже не ссылка на объект

aduka05admто есть объекты надо передавать без скобок так понял

Нет, неправильно понял. Есть скобки, относящиеся к синтаксису , есть скобки, которые участвуют в выражении.
a = rs.Fields("id").Value - скобки относятся к синтаксису
call query(strsql) - скобки относятся к синтаксису
query (strsql) - скобки НЕ относятся к синтаксису, так как в таком вызове процедуры они не предусмотрены, поэтому ты превратил переменную strsql в выражение с участием переменной strsql. В данном случае это просто лишнее действие, которое ни к чему не приводит, в случае с объектами будет все запутаннее. Просто надо четко осознавать синтаксис и не делать лишних действий.

А с ситуацией я столкнулся реально, когда один программер передавал таким образом рекордсет, а в процедуру передавалась коллекция Fields (она у рекордсета по умолчанию). Он два дня ошибку искал. А все лишь надо было синтаксис соблюдать
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36724830
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proвот определение выражения из хелпа:
блин, не то скопировал
expressionA combination of keywords, operators, variables, and constants that yields a string, number, or object. An expression can be used to perform a calculation, manipulate characters, or test data.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725093
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
очень интересно)))
авторУ них не загружаются данные в грид полностью, они подгружаются из базы по мере прокрутки грида.
не совсем понимаю как это , буду искать
спасибо за ценную информацию ))))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725207
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
query (strsql)
при передаче переменной не нужно использовать скобки получается?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36725273
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Код: plaintext
query (strsql)
при передаче переменной не нужно использовать скобки получается?
Еще раз прочти начало этого сообщения. Переменная тут не причем.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726649
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.ProЕще раз прочти начало этого сообщения. Переменная тут не причем.
это я понял спасибо большое
Shocker.ProНаличие скобок - это уже начинается выражение,
я об этом, то есть делая так
Код: plaintext
query (strsql)
и так
Код: plaintext
query strsql
один эффект , при передаче объекта было бы совсем другое,
а правильнее в этом случае второе , так как это не выражение а передача просто переменной
Shocker.ProЕсть скобки, относящиеся к синтаксису, есть скобки, которые участвуют в выражении
то есть здесь эти скобки не относятся к синтаксису , поэтому и не нужны
собственно говоря об этом и спрашивал))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726655
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Да - второе правильнее
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726807
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
не пойму в чем проблема
при клике на гриде combo перемещается на выделенную строку
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub FlexGridPlus4_Click()
Combo2.Left = FlexGridPlus4.Left + FlexGridPlus4.ColWidth( 0 )
Combo2.Top = FlexGridPlus4.Top + (FlexGridPlus4.RowHeight( 0 ) * (FlexGridPlus4.RowSel))
Combo2.Width = FlexGridPlus4.ColWidth( 1 )
Combo2.Text = FlexGridPlus4.TextMatrix(FlexGridPlus4.RowSel,  1 )
Combo2.Visible = True
End Sub
только проблема в том что если grid не помещается на форме (то есть записей много и мы прокручиваем grid), то combo появляется не в выделенной строке а ниже и чем дальше тем все дальше и дальше)))
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726810
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
а если грид помещается на форме(то есть записей мало ),то все нормально работает
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726814
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Не знаю, как у плюса, а у обычного флексгрида есть свойства CellHeight, CellTop, CellLeft
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726821
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
а у плюс нету
есть только это
Код: plaintext
FlexGridPlus4.Cells( 1 ,  1 ).Top
буду пробовать обычный flexgrid
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726824
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
а у плюс нету
есть только это
Код: plaintext
FlexGridPlus4.Cells( 1 ,  1 ).Top
буду пробовать обычный flexgrid
ну а чем тебя не устраивает это?
проблема же как раз с Топом
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726826
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
Private Sub FlexGridPlus4_Click()
Combo2.Left = FlexGridPlus4.Cells(FlexGridPlus4.RowSel,  1 ).Left +  100 
Combo2.Top = FlexGridPlus4.Cells(FlexGridPlus4.RowSel,  1 ).Top +  800 
Combo2.Width = FlexGridPlus4.Cells(FlexGridPlus4.RowSel,  1 ).Width
Combo2.Text = FlexGridPlus4.TextMatrix(FlexGridPlus4.RowSel,  1 )
Combo2.Visible = True
End Sub
сделал так и работает спасибо вам
просто смутило слово cells , думал все ячейки в строке суммировать будет(будь то высота или ширина)
спасибо вам)
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36726832
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
аж два раза поблагодарил))),на самом деле решились две проблемы разом,при добавлении новой строки прокручивается grid как надо, а то что то непонятное было
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729201
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
strsql = "Select d.name, u.name,c.name, r.price,r.amount,r.date , r.time from registr as r " + _
" LEFT JOIN documents as d and uslugi as u and clients as с  on r.doc_id= d.id and r.usluga_id=u.id and r.client_id = c.id" + _
" group by d.name"
query strsql
как правильно составить такой запрос JOIN с объединением нескольких таблиц
насколько понимаю ошибка в этой строке
Код: plaintext
 LEFT JOIN documents as d and uslugi as u and clients as с  on r.doc_id= d.id and r.usluga_id=u.id and r.client_id = c.id
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729242
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Я не знаю, что ты хотел выразить, но может это?
Код: plaintext
1.
2.
3.
LEFT JOIN documents as d on r.doc_id=d.id 
??? JOIN uslugi as u ON r.usluga_id=u.id
??? JOIN clients as с ON r.client_id=c.id
ЗЫ: для форматирования SQL используй "src sql", а не "src vba"
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729253
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
Select d.name, u.name,c.name, r.price,r.amount,r.date , r.time from registr as r 
LEFT JOIN documents as d on r.doc_id= d.id
LEFT Join uslugi as u on r.usluga_id=u.id
LEFT Join clients as с on r.client_id = c.id
не работает так у меня
есть таблицы clients , uslugi , documents (там названия)
в таблице registr (ключи с тех таблиц)
так вот хочется вывести данные с таблицы registr в grid (красиво с названиями)
делаю так с двумя таблицами
Код: plaintext
1.
2.
Select d.name, r.date , r.time from registr as r 
right JOIN documents as d on r.doc_id= d.id group by doc_id
не знаю как делать с нескольких таблиц объединение
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729260
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT weather.city, weather.temp_lo, weather.temp_hi,
       weather.prcp, weather.date, cities.location
    FROM weather, cities
    WHERE cities.name = weather.city;

Запросы объединения такого вида, могут быть также записаны в альтернативной форме:

SELECT *
    FROM weather INNER JOIN cities ON (weather.city = cities.name);
че нашел оказывается по разному можно
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729274
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
8.
9.
SELECT weather.city, weather.temp_lo, weather.temp_hi,
       weather.prcp, weather.date, cities.location
    FROM weather, cities
    WHERE cities.name = weather.city;

Запросы объединения такого вида, могут быть также записаны в альтернативной форме:

SELECT *
    FROM weather INNER JOIN cities ON (weather.city = cities.name);
че нашел оказывается по разному можно
рекомендую второй способ, при больших запросах он гораздо читабельней, кроме того так невозможно организовать LEFT/RIGHT JOIN
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729276
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admне работает так у меня
уж ты-то мог бы не забывать писать текст ошибки...
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729283
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
прошу прощения ))
-2147217887 Драйвер ODBC не поддерживает требуемые свойства.
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Public Sub query(strquery As String)
strconn = "Driver={MySQL ODBC 3.51 Driver};Server=localhost;Database=it; User=root;Password=506;Option=3;"
Set Conn = New ADODB.Connection
Set rs = New ADODB.Recordset
Conn.Open strconn
rs.Open strquery, Conn, adCmdText
End Sub
и сам запрос
Код: plaintext
1.
2.
3.
4.
5.
6.
7.
Private Sub Command9_Click()
strsql = "Select d.name, u.name,c.name, r.price,r.amount,r.date , r.time from registr as r " + _
" LEFT JOIN documents as d on r.doc_id= d.id " + _
"LEFT Join uslugi as u on r.usluga_id=u.id " + _
"LEFT Join clients as с on r.client_id = c.id"
query strsql
End Sub
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729287
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05adm,

Может из-за того, что забыл точку с запятой в конце запроса?

Вообще, запросы лучше отлаживай в MySQL-Manager (или чем ты там пользуешься), а потом готовые переноси в VB, пока руку не набьешь...

Сорри, на сегодня ушел спать, отвечу завтра...
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729290
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
буду пробовать,спасибо
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729295
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
вот блин
Код: plaintext
1.
LEFT Join clients as с on r.client_id = c.id
оказывается это русская буква "с"
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729304
White Owl
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Proрекомендую второй способ, при больших запросах он гораздо читабельней, кроме того так невозможно организовать LEFT/RIGHT JOINПочему это вдруг "не возможно"? Все возможно. Но ANSI-синтаксис действительно удобнее.
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729521
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
White Owlочему это вдруг "не возможно"? Все возможно.
OR IS NULL?
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36729528
Фотография Shocker.Pro
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
aduka05admShocker.Pro,
вот блин
Код: plaintext
1.
LEFT Join clients as с on r.client_id = c.id
оказывается это русская буква "с"
а) у меня аллергия на использование отдельно стоящей буквы "с"
б) странно, почему такая ошибка, по хорошему должно быть выдано, что мол "алиас не найден", по крайней мере так ругается MSSQL
...
Рейтинг: 0 / 0
Подскажите в чем проблема
    #36730137
Фотография aduka05adm
Скрыть профиль Поместить в игнор-лист Сообщения автора в теме
Участник
Shocker.Pro,
Shocker.Proу меня аллергия на использование отдельно стоящей буквы "с"
меня тоже раздражает , когда приходится другие тыкать для проверки
...
Рейтинг: 0 / 0
68 сообщений из 68, показаны все 3 страниц
Форумы / Visual Basic [игнор отключен] [закрыт для гостей] / Подскажите в чем проблема
Найденые пользователи ...
Разблокировать пользователей ...
Читали форум (0):
Пользователи онлайн (0):
x
x
Закрыть


Просмотр
0 / 0
Close
Debug Console [Select Text]