2011-04-09 5 views
1

я использовал эту линиюИспользование переменных вместо объектов

.RecordSource = "select * from tblpersonal where empid like '" & Me.lblIDNumber.Caption & "*'" 

... мой вопрос, что если я использую переменную (varIDNumber) вместо объекта (lblIDNumber), то, что будет синтаксис? Я использую VB6.0

+0

Я смущен насчет 'lblIDNumber' vs' txtIDNumber'. Вы используете ярлык или текстовое поле? Я предполагаю, что когда вы говорите 'lblIDNumber.Caption', вы имеете в виду' txtIDNumber.Text'. – mgiuca

+0

Прошу прощения ... Я имею в виду lblIDNumber – aer

+0

Тогда я немного смущен - если вы вытаскиваете его из метки, это не то, что пользователь может изменить. Предполагается, что это постоянный? – mgiuca

ответ

1

Вы не упомянули txtIDNumber в коде - вы упомянули lblIDNumber. Я полагаю, вы хотите, чтобы эти два были одинаковыми. Другими словами, код, который вы имеете в настоящее время должно быть что-то вроде этого:

.RecordSource = "select * from tblpersonal where empid like '" & Me.txtIDNumber.Text & "*'" 

Таким образом, вы используете значение текстового поля в форме для заполнения запроса SQL. До сих пор я прав?

И вы спрашиваете, что, если я храню идентификационный номер в переменной, а не в текстовом поле? Я согласен, это, вероятно, шаг в правильном направлении.

Таким образом, вы можете создать переменную в разделе «Общие объявления» формы с использованием:

Dim idNumber As Integer 

С идеей в том, чтобы обновить значение этой переменной каждый раз, когда изменяется текстовое поле. Примечание. Я предполагаю, что «Идентификационный номер» является целым числом - если нет, вы должны использовать String.

Теперь вам нужно обновить эту переменную при изменении текстового поля. В событии txtIDNumber_Change вы захотите добавить код для преобразования строки txtIDNumber.Text в целое число и сохранить его в idNumber. Я забыл точный синтаксис, но я предполагаю, что-то вроде:

idNumber = Int(txtIDNumber.Text) 

Наконец, теперь вы можете использовать переменную idNumber в запросе SQL, а не текстовое поле:

.RecordSource = "select * from tblpersonal where empid like '" & idNumber & "*'" 
+1

Заметка об уязвимостях SQL-инъекций: у вашего исходного кода есть проблема с безопасностью. в текстовое поле «4», drop table tblpersonal, select * from tblpersonal, где empid = ''- это фактически выполнит их код удаления вредоносных таблиц, потому что вы не дезинфицировали строку. Преобразование его в целое число, как я предположил, решить эту проблему для этого конкретного случая, но если вы хотите разрешить полные строки в любом месте, будет намного сложнее исправить проблему. – mgiuca

+0

@mgiuca ... так что это лучший синтаксис для этого? Я использую этот код для * * Программа поиска **. – aer

+0

Если целью кода является поиск сотрудника по идентификатору, который пользователь вводит в текстовое поле, тогда у вас должно быть текстовое поле, а не метка ... как я уже сказал в ответ на вопрос, который я смущен что. Если у вас есть текстовое поле, тогда мой ответ дает весь необходимый вам синтаксис ... определите переменную, преобразуйте строку в целое число и сохраните ее в переменной, а затем используйте переменную в запросе. – mgiuca

0

Заменить Me.lblIDNumber.Caption с varIDNumber

+0

Я прошу синтаксис: .RecordSource = "select * from tblpersonal, где empid like '" varIDNumber " * «Это правильно? – aer

+1

Ну, вам все еще нужны амперсанды. Итак, ... 'где empid like '" & varIDNumber & "*'" '. Но вам все еще нужен код для заполнения этой переменной. – mgiuca

0

Если у вас есть константа в метке и предпочла бы, чтобы константа была сохранена в переменной вместо этого, создайте Const в коде формы. Скажем, на этикетке есть текст «43».

В секции объявлений общей формы, добавьте код:

Const idNumber As Integer = 43 

Тогда при построении запроса:

.RecordSource = "select * from tblpersonal where empid like '" & idNumber & "*'" 

Это будет построить запрос, используя константу 43. Я не я действительно вижу смысл этого - если вы хотите, чтобы номер сотрудника был чем-то, что пользователь может ввести, см. мой другой ответ.

+0

... не могли бы вы спросить вас? в чем цель звездочки? ''" & idNumber & "*'" 'что, если я заменил его знаком процента? Каков был бы результат? – aer

+0

Я не уверен, для чего предназначена * Я думаю, что% - это то, что вы обычно используете, как подстановочный знак, в SQL. Это означает, что поиск любого сотрудника с idNumber, который * начинается с * этих цифр. – mgiuca

Смежные вопросы